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将返回
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
相关文章:
- Emberjs#每个循环不处理数组数据
- Javascript拼接对象而不是数组
- Angularjs:如何删除动态表行,但不从数组中删除
- 局部数组变量不是数组
- Javascript:push 不是数组的函数
- 解析查询查找方法返回对象而不是数组
- 为什么删除运算符不更改数组的长度
- 在数据表中使用 JSON 对象而不是数组
- 谷歌图表错误'不是数组'关于Ajax更新
- 为什么此代码返回未定义的4次而不是数组值
- 如何在不创建数组的情况下使用NgFor来生成矩阵UI模式
- 如何在Angular中设置异步HTTP服务的回调,以便在不定义数组的情况下在控制器中填充数组
- Ng重复不随数组变化而更新
- 数组长度不等于数组对象
- JSON.stringify不转换数组
- AngularJS 1.2.0 $http不保留数组元素
- 如何将变量设置为给定时刻数组的值,而不是数组的任何值
- 在javascript中,如何将相同的对象两次推送到一个数组中,并进行一些修改而不覆盖数组
- 函数看不到数组中的更改
- 循环遍历 ArrayController 失败,因为它不是数组,即使控制器具有正确的数据模型也是如此