1

I have a page that onload is adding fields to a form, but this call never seems to step into the .each statement inside of getJSON. I can see the url being fetched with a GET on the network tab of chrome, but it doesnt add any inputs to my form.

$.each( brand, function( key, value ) {
    if(domain == value) $("#brand").show();
    $.getJSON( 'http://forms.anniesatticmysteries-news.com/ats/url.aspx?cr=422&wu=1', function( data ) {
        $.each( data, function( key, val ) {
            $("#brandForm").append('<input type="hidden" name="s_email_sp'+ [value][0] +'_status_id" value="'+ [value][2] +'" /> ');
        });
    });
});

And here is a part of my json object.

{
"anniescatalog-news.com":["1","email_sp1_status_id","{(email_sp1_status_id)}"],
"anniesmysteries-news.com":["2","email_sp2_status_id","{(email_sp2_status_id)}"],
"anniesnewsletters-news.com":["3","email_sp3_status_id","{(email_sp3_status_id)}"],
"annies-publishing-news.com":["4","email_sp4_status_id","{(email_sp4_status_id)}"]
}

The domains are the same that I am requesting from, so it shouldnt be a cross site issue. Here is the url: http://forms.anniesatticmysteries-news.com/ats/show.aspx?cr=422&fm=43&dm=AnniesAtticMysteries-news.com

Src1988
  • 173
  • 2
  • 14
  • assuming this might help you: Visit http://stackoverflow.com/questions/8951810/how-to-parse-json-data-with-jquery-javascript – vnimbala May 07 '14 at 14:55
  • Your `data` object/Json isn't an array, an array would be `[{..},{..}]` not `{value:[arrayofstrings]}`. – Liam May 07 '14 at 14:57
  • I am already using getJSON so it should be setting the Content-Type to json by default. That question was around using the .ajax feature and bypassing it there. – Src1988 May 07 '14 at 14:57
  • Are you by any chance serialising a Dictionary? – Liam May 07 '14 at 14:58
  • Not a dictionary. Just a list of inputs needed as part of this form. Instead of hardcoding them into all the different versions of the form, i thought it would be easier to add to the respective form that is displayed onload. – Src1988 May 07 '14 at 15:00
  • @Liam even if the array is setup incorrectly, wouldnt the .each statement still print out an input? – Src1988 May 07 '14 at 15:08
  • Yes, kind of. But I don't think it's going to do what you think it will. What's `[value][0]`? – Liam May 07 '14 at 15:14
  • Have a look at this [fiddle](http://jsfiddle.net/7xXYH/1/), This is what you're looping. – Liam May 07 '14 at 15:16
  • In my example above it was the '1', '2', etc. But how should I structure my json and then call it to get that first value? – Src1988 May 07 '14 at 15:17
  • ....or are you not interested in what's in the Json? – Liam May 07 '14 at 15:17
  • I am interested for other parts of the page, but for this part I just need that first value, but if i can get this i can figure out how to get the other elements. – Src1988 May 07 '14 at 15:18
  • So you just want the `anniescatalog-news.com` bit? Because that's a property **name** not a **value** in that Json. – Liam May 07 '14 at 15:20
  • If i kept the json the same, how would i get "anniescatalog-news.com" and "{(email_sp1_status_id)}"? – Src1988 May 07 '14 at 15:23
  • Or is there a better way to structure json? – Src1988 May 07 '14 at 15:23
  • Just writing something up, bear with me – Liam May 07 '14 at 15:24

1 Answers1

1

I'm pretty sure your Json is formatted incorrectly for what you want.

If you take:

var obj1 = {
"anniescatalog-news.com":["1","email_sp1_status_id","{(email_sp1_status_id)}"],
"anniesmysteries-news.com":["2","email_sp2_status_id","{(email_sp2_status_id)}"],
"anniesnewsletters-news.com":["3","email_sp3_status_id","{(email_sp3_status_id)}"],
"annies-publishing-news.com":["4","email_sp4_status_id","{(email_sp4_status_id)}"]
}; 

If you look at this in an inspector you can see the url is a property name not a value:

enter image description here

so you can't access anniescatalog-news.com as a value. The property is called anniescatalog-news.com: obj1.anniescatalog-news.com == "1","email_sp1_status_id","{(email_sp1_status_id)}" Fiddle here

If you can change the Json to:

[
    {name:"anniescatalog-news.com", value:["1","email_sp1_status_id","{(email_sp1_status_id)}"]},
    {name:"anniesmysteries-news.com", value:["2","email_sp2_status_id","{(email_sp2_status_id)}"]},
    {name:"anniesnewsletters-news.com", value:["3","email_sp3_status_id","{(email_sp3_status_id)}"]},
    {name:"annies-publishing-news.com", value:["4","email_sp4_status_id","{(email_sp4_status_id)}"]}
]

Or similar. Now you have an array (Json notation: [])of objects (Json notation: {}) containing name and value pairs. So you can access these thus:

var obj1 = [
    {name:"anniescatalog-news.com", value:["1","email_sp1_status_id","{(email_sp1_status_id)}"]},
    {name:"anniesmysteries-news.com", value:["2","email_sp2_status_id","{(email_sp2_status_id)}"]},
    {name:"anniesnewsletters-news.com", value:["3","email_sp3_status_id","{(email_sp3_status_id)}"]},
    {name:"annies-publishing-news.com", value:["4","email_sp4_status_id","{(email_sp4_status_id)}"]}
];

$.each(obj1, function(index, obj2) {
    alert(obj2.name);
});

fiddle

You can also access the value array thus:

obj2.value[1]

Fiddle

BTW the standard Json serializer's tend to make a hash of this kind of stuff. I'd recommend Json.Net for something that works better.


Your response is badly formatted for some reason:

[
    {name:"anniescatalog-news.com", value:["1","email_sp1_status_id",""]},
    {name:"anniesmysteries-news.com", value:["2","email_sp2_status_id",""]},
    {name:"anniesnewsletters-news.com", value:["3","email_sp3_status_id",""]},
    {name:"annies-publishing-news.com", value:["4","email_sp4_status_id",""]},
    {name:"anniesquiltedmysteries-news.com", value:["5","email_sp5_status_id",""]},
    {name:"annieswsl-news.com", value:["6","email_sp6_status_id",""]},
    {name:"cardmakerkitclub-news.com", value:["email_sp7_status_id",""]},
    {name:"cardmakermagazine-news.com", value:["email_sp8_status_id",""]},
    {name:"countrysampler-news.com", value:["email_sp9_status_id",""]},
    {name:"creativegirlsclub-news.com", value:["email_sp10_status_id",""]},
    {name:"creativeknittingmagazine-news.com", value:["email_sp11_status_id",""]},
    {name:"creativequiltersfabricclub-news.com", value:["email_sp12_status_id",""]},
    {name:"creativewomanmysteries-news.com", value:["email_sp13_status_id",""]},
    {name:"crochetmagazine-news.com", value:["email_sp14_status_id",""]},
    {name:"crochet-world-news.com", value:["email_sp15_status_id",""]},
    {name:"e-patternscentral-news.com", value:["email_sp16_status_id",""]},
    {name:"freebeadguide-news.com", value:["email_sp17_status_id",""]},
    {name:"free-cardmaking-news.com", value:["email_sp18_status_id",""]},
    {name:"free-crochet-news.com", value:["email_sp19_status_id",""]},
    {name:"free-knitpatterns-news.com", value:["email_sp20_status_id",""]},
    {name:"freepatterns-news.com", value:["email_sp21_status_id",""]},
    {name:"free-quilting-news.com", value:["email_sp22_status_id",""]},
    {name:"freequiltingguide-news.com", value:["email_sp23_status_id",""]},
    {name:"free-sewing-news.com", value:["email_sp24_status_id",""]},
    {name:"freesewingguide-news.com", value:["email_sp25_status_id",""]},
    {name:"goodolddaysmagazine-news.com", value:["email_sp26_status_id",""]},
    {name:"goodolddaysstore-news.com", value:["email_sp27_status_id",""]},
    {name:"hookandneedleclub-news.com", value:["email_sp28_status_id",""]},
    {name:"just-crossstitch-news.com", value:["email_sp29_status_id",""]},
    {name:"knitandcrochetnow-news.com", value:["email_sp30_status_id",""]},
    {name:"learntoknitsocks-news.com", value:["email_sp31_status_id",""]},
    {name:"liveitagain-news.com", value:["email_sp32_status_id",""]},
    {name:"quiltersworld-news.com", value:["email_sp33_status_id",""]},
    {name:"sanqmagazine-news.com", value:["email_sp34_status_id",""]},
    {name:"simplybeadskitclub-news.com", value:["email_sp35_status_id",""]},
    {name:"youngwoodworkers-news.com", value:["email_sp36_status_id",""]},
    {name:"anniescatalog-orders.com", value:["email_sp37_status_id",""]},
    {name:"annieswsl-orders.com", value:["email_sp38_status_id",""]},
    {name:"e-patternscentral-orders.com", value:["email_sp39_status_id",""]},
    {name:"goodolddaysstore-orders.com", value:["email_sp40_status_id",""]},
    {name:"orders.annies-publishing-news.com", value:["email_sp41_status_id",""]},
    {name:"orders.anniesquiltedmysteries-news.com", value:["email_sp42_status_id",""]},
    {name:"orders.cardmakerkitclub-news.com", value:["email_sp43_status_id",""]},
    {name:"orders.cardmakermagazine-news.com", value:["email_sp44_status_id",""]},
    {name:"orders.countrysampler-news.com", value:["email_sp45_status_id",""]},
    {name:"orders.creativegirlsclub-news.com", value:["email_sp46_status_id",""]},
    {name:"orders.creativeknittingmagazine-news.com", value:["email_sp47_status_id",""]},
    {name:"orders.creativequiltersfabricclub-news.com", value:["email_sp48_status_id",""]},
    {name:"orders.creativewomanmysteries-news.com", value:["email_sp49_status_id",""]},
    {name:"orders.crochetmagazine-news.com", value:["email_sp50_status_id",""]},
    {name:"orders.crochet-world-news.com", value:["email_sp51_status_id",""]},
    {name:"orders.goodolddaysmagazine-news.com", value:["email_sp52_status_id",""]},
    {name:"orders.hookandneedleclub-news.com", value:["email_sp53_status_id",""]},
    {name:"orders.just-crossstitch-news.com", value:["email_sp54_status_id",""]},
    {name:"orders.liveitagain-news.com", value:["email_sp55_status_id",""]},
    {name:"orders.quiltersworld-news.com", value:["email_sp56_status_id",""]},
    {name:"orders.sanqmagazine-news.com", value:["email_sp57_status_id",""]},
    {name:"orders.simplybeadskitclub-news.com", value:["email_sp58_status_id",""]},
    {name:"orders.youngwoodworkers-news.com", value:["email_sp59_status_id",""]},
    {name:"email.anniesnewsletters-news.com", value:["email_sp60_status_id",""]},
    {name:"email.anniescatalog-news.com", value:["email_sp61_status_id",""]},
    {name:"email.countrysampler-news.com", value:["email_sp62_status_id",""]},
    {name:"goodolddaysnewsletter.com", value:["email_sp63_status_id",""]},
    {name:"anniesquiltersworldnewsletter.com", value:["email_sp64_status_id",""]},
    {name:"anniestalkingcrochetnewsletter.com", value:["email_sp65_status_id",""]},
    {name:"anniescreativewomannewsletter.com", value:["email_sp66_status_id",""]},
    {name:"anniescreativeknittingnewsletter.com", value:["email_sp67_status_id",""]},
    {name:"anniessewingsavvynewsletter.com", value:["email_sp68_status_id",""]},
    {name:"e-patternscentral-daily-news.com", value:["email_sp69_status_id",""]},
    {name:"anniesquiltsewdaily-news.com", value:["email_sp70_status_id",""]},
    {name:"anniescardmakernewsletter.com", value:["email_sp71_status_id",""]},
    {name:"anniessimplybeadsnewsletter.com", value:["email_sp72_status_id",""]},
    {name:"anniescrochetcraft-news.com", value:["email_sp73_status_id",""]},
    {name:"e-patternscentral-quilt-news.com", value:["email_sp74_status_id",""]},
    {name:"anniesgoodolddaysstoredaily-news.com", value:["email_sp75_status_id",""]},
    {name:"anniesquiltdaily-news.com", value:["email_sp76_status_id",""]},
    {name:"anniescrochetknitdownload-news.com", value:["email_sp77_status_id",""]},
    {name:"anniesquiltsewdownloads-news.com", value:["email_sp78_status_id",""]},
    {name:"anniesknityarndaily-news.com", value:["email_sp80_status_id",""]},
    {name:"anniescrochetloversdaily.com", value:["email_sp81_status_id",""]},
    {name:"annieslovetoknit.com", value:["email_sp82_status_id",""]},
    {name:"annieslovetoquilt.com", value:["email_s83_status_id",""]},
    {name:"anniescrochetdaily-news.com", value:["email_sp84_status_id",""]},
    {name:"e-patternscentral-crochet-news.com", value:["email_sp85_status_id",""]},
    {name:"e-patternscentral-knitting-news.com", value:["email_sp86_status_id",""]},
    {name:"anniescreativecards.com", value:["email_sp87_status_id",""]},
    {name:"anniesplasticcanvaslovers.com", value:["email_sp88_status_id",""]},
    {name:"anniesbeadsandjewelry.com", value:["email_sp89_status_id",""]},
    {name:"anniesonlineclassdaily-news.com", value:["email_sp90_status_id",""]},
    {name:"anniesknitandcrochetnownewsletter.com", value:["email_sp91_status_id",""]},
    {name:"anniescrossstitchneedlework.com", value:["email_sp92_status_id",""]},
    {name:"anniesjustcrossstitchnewsletter.com", value:["email_sp93_status_id",""]},
    {name:"anniessimplysewing.com", value:["email_sp94_status_id",""]},
    {name:"anniesfabrictrendreport.com", value:["email_sp95_status_id",""]},
    {name:"anniesyarntrendreport.com", value:["email_sp96_status_id",""]},
    {name:"anniesatticmysteries-news.com", value:["email_sp97_status_id",""]},
    {name:"anniescreativepainter-news.com", value:["email_sp98_status_id",""]},
    {name:"anniescreativewomanclub-news.com", value:["email_sp99_status_id",""]},
    {name:"anniessecretofthequilt-news.com", value:["email_sp100_status_id",""]},
    {name:"anniesmysteriesunraveled-news.com", value:["email_sp101_status_id",""]},
    {name:"countrysamplermagazine-news.com", value:["email_sp102_status_id",""]},
    {name:"clotilde-news.com", value:["email_sp103_status_id",""]},
    {name:"CountrySamplerStyleToSpare-news.com", value:["email_sp104_status_id",""]},
    {name:"CountrySamplerIssuePreview-news.com", value:["email_sp105_status_id",""]}
]
<img src="http://links.anniesatticmysteries-news.com/rts/open.aspx?tp=i-4p-6o-y-1o-1c-G-5ipHQ" height="1" width="1" style="display:none">
</body>
</html>

Whats the

<img src="http://links.anniesatticmysteries-news.com/rts/open.aspx?tp=i-4p-6o-y-1o-1c-G-5ipHQ" height="1" width="1" style="display:none">
    </body>
    </html>

Doing there??? Use fiddler to inspect your HTTP.

Liam
  • 27,717
  • 28
  • 128
  • 190
  • I changed the json and updated my tags, but it still doesnt seem to put any inputs. I'm not sure where its dropping off. – Src1988 May 07 '14 at 16:25
  • Live example: http://forms.anniesatticmysteries-news.com/ats/show.aspx?cr=422&fm=43&dm=AnniesAtticMysteries-news.com – Src1988 May 07 '14 at 16:25
  • I can see if sending of the request but the success is failing. Not sure why, nor (and don't take this the wrong way) am I prepared to debug your entire site for you :). I would suggest that rather than using getJson (which I've never liked) use $.ajax (https://api.jquery.com/jQuery.ajax/). getJson is just a wrapper for this method. I take it you know [how to debug JavaScript](http://stackoverflow.com/questions/988363/how-can-i-debug-my-javascript-code)? – Liam May 07 '14 at 16:32
  • No problem at all, i will switch to .ajax and debug from there. Thank you for your help. – Src1988 May 07 '14 at 16:33
  • I see yourb problem, your response has a random bit of HTML in the bottom...? Not sure why. But it's not valid Json. Will post example now – Liam May 07 '14 at 16:34