responseText数组解析不正确

responseText array not parsing properly

本文关键字:不正确 数组 responseText      更新时间:2023-12-01

我正在使用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将返回

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

提前感谢:)

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

您必须对给定的响应使用Javascript函数JSON.parse()

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

演示

没关系,我找到了解决办法。

如果我使用

var myArray= JSON.parse(ajaxResponse);

返回将是

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

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

哈哈,我在StackOverflow中的第一个问题,我回答了P