responseText 数组未正确解析

responseText array not parsing properly

我正在使用 ajax 从我的 php 解析器中检索一个 json_encode() 数组。

响应文本是 ["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 将 return

4.wav, 2.wav, 3.wav, 6.mp3, 1.mp3, 5.wav 

myArray.length 计数为 6,对吗?

但是如果我将我的 responseText 放在一个 var 中,并且像这样:

var myArray = event.target.responseText;

myArray 将 return

["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();

提前致谢:)

因为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

没关系, 我找到了解决方案。

如果我使用

var myArray= JSON.parse(ajaxResponse);

return 将是

4.wav, 2.wav, 3.wav, 6.mp3, 1.mp3, 5.wav

所以我可以将它用作数组。

大声笑,我在 Whosebug 中的第一个问题,我自己回答了! :P

您必须使用 Javascript 函数 JSON.parse() 来处理给定的响应。

var a = '["4.wav","2.wav","3.wav","6.mp3","1.mp3","5.wav"]';
alert(JSON.parse(a).length);

Demo