我正在尝试刷新表格单元格的内容。因此,我有一个JavaScript,其中包含对.php文件的AJAX请求,该文件创建了我想通过JavaScript插入到我的表中的内容。 .php文件的最后一个命令类似于echo json_encode($result);
。
回到JavaScript中说:
var testarray = xmlhttp.response;
alert(testarray);
但警报的外观如下:
{"1":{"1":"3","2":"0","3":"2","4":"0"}}{"1":{"1":"3","2":"0","3":"2","4":"0"},"2":{"1":"2","2":"1","3":"1","4":"1"}}...
因此,似乎变量testarray
不是作为数组处理而是作为字符串处理。我已经尝试了var testarray = JSON.parse(xmlhttp.response)
,但这不起作用。 eval()
也不起作用。
我不知道该怎么做,所以我的请求的反应就成了一个对象。
答案 0 :(得分:1)
你的json有两件奇怪的事情:
这部分不是json有效的:...} {... 两个对象应该用逗号分隔
符号是字符串索引的对象,而不是带有int索引的数组 它应该是这样的:[[1,2,3,4],[5,6,7,8]]
对于点1.看起来你有一个连接许多json的循环
表示点2.对象表示法可以用作数组,因此无关紧要
一些代码:
//the folowing code doesn't work: }{ is not parsable
var a=JSON.parse('{"1":{"1":"3","2":"0","3":"2","4":"0"}}{"1":{"1":"3","2":"0","3":"2","4":"0"},"2":{"1":"2","2":"1","3":"1","4":"1"}}');
//the folowing code work and the object can be used as an array
var a=JSON.parse('{"1":{"1":"3","2":"0","3":"2","4":"0"},"2":{"1":"2","2":"1","3":"1","4":"1"}}');
alert(JSON.stringify(a[1]));
//the folowing code displays the real notation of a javascript array:
alert(JSON.stringify([1,2,3,4]));
答案 1 :(得分:0)
我认为这里的问题可能是你的数组没有索引0。
e.g。如果你从服务器输出它 - 它会产生一个对象:
$result = [];
for ($i = 1; $i < 5; $i++) $result[$i] = $i;
echo json_encode($result); // outputs an object
如果从服务器输出 - 它将产生一个数组:
$result = [];
for ($i = 0; $i < 5; $i++) $result[$i] = $i;
echo json_encode($result); // produces an array
无论如何,即使您的服务器输出数组作为对象 - 您仍然可以在javascript中正常访问它:
var resp = xmlhttp.responseText, // "responseText" - if you're using native js XHR
arr = JSON.parse(resp); // should give you an object
console.log(arr[1]); // should give you the first element of that object