|
Prev: maximum rows added to table
Next: FAQ Topic - How do I get a perl/asp/php variable into client-side js? (2008-05-03)
From: "Jon Paal [MSMD]" Jon nospam Paal on 4 May 2008 14:50 using json like ( {"Records": [ {"firstname":"Nancy","lastname":"Davolio"} ], "RecordCount":"1" } ) and jquery like: $.ajax({ .... success: function(json, status) { if(json.Records){alert("firstname= "+json.Records.firstname );} .... I can retrieve values for firstname if I use the reference spelled out is there a way to get it by numerical position, something like: if(json.Records){alert("firstname= "+json.Records.0 );} except it would work .. :) thanks in advance
From: Jorge on 4 May 2008 20:13 On May 4, 8:50 pm, "Jon Paal [MSMD]" <Jon nospam Paal @ everywhere dot com> wrote: > using json like > > ( {"Records": [ {"firstname":"Nancy","lastname":"Davolio"} ], "RecordCount":"1" } ) > > and jquery like: > > $.ajax({ > ... > > success: function(json, status) { > if(json.Records){alert("firstname= "+json.Records.firstname );} > ... > > I can retrieve values for firstname if I use the reference spelled out > > is there a way to get it by numerical position, something like: > > if(json.Records){alert("firstname= "+json.Records.0 );} > > except it would work .. :) > > thanks in advance <html> <head></head> <body> <script> var jsonText, records, recordCount, i, a, b; /* If the data was serialized this way : */ jsonText='[["Nancy","Davolio"],["Jon","Paal"]]'; records = eval(jsonText); /* Then you could do : */ recordCount = records.length; for (i=0; i<recordCount; i++) { a = records[i][0]; b = records[i][1] alert( b+", "+a); } /* HTH, --Jorge. */ </script> </body> </html>
From: "Jon Paal [MSMD]" Jon nospam Paal on 4 May 2008 23:57 thanks, this will work, and if I still need formal json I'll go back to hard coding names....
From: Lasse Reichstein Nielsen on 5 May 2008 01:01 "Jon Paal [MSMD]" <Jon nospam Paal @ everywhere dot com> writes: > using json like > > ( {"Records": [ {"firstname":"Nancy","lastname":"Davolio"} ], "RecordCount":"1" } ) > > and jquery like: > > $.ajax({ > ... > > success: function(json, status) { > if(json.Records){alert("firstname= "+json.Records.firstname );} > ... I hope it's "json.Records[0].firstname", since Records is an array. > I can retrieve values for firstname if I use the reference spelled out > > is there a way to get it by numerical position, something like: > > if(json.Records){alert("firstname= "+json.Records.0 );} json.Records[0] gives the first record. To retrieve the "firstname" property, you need to use the "firstname" property name. There is no ordering of named properties, so they don't have a numerical index at all. /L -- Lasse Reichstein Nielsen - lrn(a)hotpop.com DHTML Death Colors: <URL:http://www.infimum.dk/HTML/rasterTriangleDOM.html> 'Faith without judgement merely degrades the spirit divine.'
From: Jorge on 5 May 2008 06:04
On May 5, 5:57 am, "Jon Paal [MSMD]" <Jon nospam Paal @ everywhere dot com> wrote: > thanks, > > this will work, and if I still need formal json I'll go back to hard coding names.... Cool. It's not stated clearly enough at json.org : http://tools.ietf.org/html/rfc4627 : line 75 : "A JSON text is a serialized object *** or array. ***" But what parses as valid json ? <html> <head> <style> bad { color: red; } blue { color: blue; } </style> <script src="http://www.JSON.org/json2.js"> /* Please do NOT link to json.org, use your own copy instead. */ </script> </head> <body> <!--567890123456789012345678901234567890123456789012345678901234567890 --> <script> (function () { var testIt = function (p) { var i, name = prefix = msg = ""; var datesAsObjects = function (key, value) { /* see the reviver function in the source code : json.org/json2.js line ~104.. this is an example function that intercepts Date(mm/dd/yyyy) and turns it into a date object instead of a string. It's NOT part of the json standard, it's just a quick example of a reviver function. (and it has a bug). */ var d; if (typeof value === 'string' && value.slice(0, 5) === 'Date(' && value.slice(-1) === ')') { d = new Date(value.slice(5, -1)); if (d) { return d; } } return value; } try { data = JSON.parse(p, datesAsObjects); /* See the source : json.org/json2.js */ if (typeof data === 'object') { if (data.constructor === Array) { msg = "an object : Array : "; for (i=0;i<data.length;i++) { msg += prefix+"e["+i+"]: "+typeof data[i]+" = "+data[i]; prefix = ", "; } } else if (data.constructor === Object) { msg = "an object : Object : "; for (name in data) { if (data.hasOwnProperty(name)) { msg += prefix+name+": "+typeof data[name]+" = "+data[name]; } } } else { msg="an object whose constructor is : "+data.constructor; } } else { msg = "a " + typeof data + ": " + data; } document.write("The string "+p+" was parsed as"); document.write(" VALID json.\nIt produced " + msg + "<br>"); } catch (e) { document.write("<bad>The string "+p+" is NOT"); document.write(" valid json.</bad><br>"); } }; /* In theory, just arrays and objects, in practice : let's see what's what (valid json?) : */ testIt('01/15/2008'); testIt('[01/15/2008]'); testIt('15/01/2008'); testIt('[15/01/2008]'); testIt('"01/15/2008"'); testIt('["01/15/2008"]'); testIt('"15/01/2008"'); testIt('["15/01/2008"]'); testIt('Date(15/01/2008)'); testIt('[Date(15/01/2008)]'); testIt('Date(01/15/2008)'); testIt('[Date(01/15/2008)]'); /* the next one gives the date wrong. */ document.write("<blue>"); testIt('"Date(15/01/2008)"'); testIt('["Date(15/01/2008)"]'); document.write("</blue>"); testIt('"Date(01/15/2008)"'); testIt('["Date(01/15/2008)"]'); testIt('true'); testIt('[true]'); testIt('True'); testIt('[True]'); testIt('false'); testIt('[false]'); testIt('False'); testIt('[False]'); testIt('null'); testIt('[null]'); testIt('Null'); testIt('[Null]'); testIt('"true"'); testIt('["true"]'); testIt('"True"'); testIt('["True"]'); testIt('"false"'); testIt('["false"]'); testIt('"False"'); testIt('["False"]'); testIt('"null"'); testIt('["null"]'); testIt('"Null"'); testIt('["Null"]'); testIt('Hi there !'); testIt('[Hi there !]'); testIt('"Hi there !"'); testIt('["Hi there !"]'); testIt('99'); testIt('[99]'); testIt('99.98'); testIt('[99.98]'); testIt('9.98e-16'); testIt('[9.98e-16]'); testIt('"99"'); testIt('["99"]'); testIt('"99.98"'); testIt('["99.98"]'); testIt('"9.98e-16"'); testIt('["9.98e-16"]'); testIt('[["Nancy","Davolio"],["Jon","Paal"]]'); /* the next one gives an invalid date. */ document.write("<blue>"); testIt('["Date(01/15/2008)","Date()","Date","99",99]'); document.write("</blue>"); testIt('{"aProperty":99}'); testIt('"function(){alert(window.location.href)}"'); testIt('function(){alert(window.location.href)}'); testIt('"window.aGlobalVar=99"'); testIt('window.aGlobalVar=99'); /* HTH --Jorge. */ })(); </script> </body> </html> |