responseText数组无法正确解析

时间:2015-02-17 05:43:54

标签: javascript php ajax responsetext

我使用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();

提前致谢:)

3 个答案:

答案 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