我使用ajax从我的php解析器中检索json_encode()数组。
responseText为["4.wav","2.wav","3.wav","6.mp3","1.mp3","5.wav"]
如果我把它放在这样的数组中:
var myArray = ["4.wav","2.wav","3.wav","6.mp3","1.mp3","5.wav"];
myArray将返回
4.wav, 2.wav, 3.wav, 6.mp3, 1.mp3, 5.wav
myArray.length计数为6正如预期的那样?
但是如果我将responseText放在var中并且像这样:
var myArray = event.target.responseText;
myArray将返回
["4.wav","2.wav","3.wav","6.mp3","1.mp3","5.wav"]
,myArray.length计数为49。
有人可以解释这里到底发生了什么事吗?
以下是我如何进行ajax调用:
var ajax = new XMLHttpRequest();
ajax.addEventListener("load", function(event){
var response = event.target.responseText;});
ajax.open("POST", "parser.php");
ajax.send();
提前致谢:)
答案 0 :(得分:4)
因为event.target.responseText
不是数组,所以它是一个字符串。字符串对象的长度是指字符串中的字符数。您需要在回复中调用JSON.parse
以获得所需的正确格式。
var responseText = '["4.wav","2.wav","3.wav","6.mp3","1.mp3","5.wav"]';
responseText.length //49 at this point, the length of the string
var responseArray = JSON.parse(responseText);
responseArray.length //6, because it's an array
答案 1 :(得分:0)
没关系, 我找到了解决方案。
如果我使用
var myArray= JSON.parse(ajaxResponse);
回报将是
4.wav, 2.wav, 3.wav, 6.mp3, 1.mp3, 5.wav
所以我可以将它用作数组。
Lol,我在StackOverflow中的第一个问题,我回答了我的问题! :P
答案 2 :(得分:0)
您必须在给定的回复中使用Javascript函数JSON.parse()
。
var a = '["4.wav","2.wav","3.wav","6.mp3","1.mp3","5.wav"]';
alert(JSON.parse(a).length);
<强> Demo 强>