【问题标题】:Initialize Array with string in array form用数组形式的字符串初始化数组
【发布时间】:2014-06-19 19:49:17
【问题描述】:

我有一个来自 ajax 结果的字符串:

["name1", "name2", "name3", "name4", "name5"]

字符串模式如上,包括",总元素不固定

我尝试了下面的代码但不起作用:

var strArr="";
$.ajax({url:"myurl",success:function(result){
     strArr=result;
}});
var arr = new Array(strArr);

更新:这是我的最新代码

var strArr="";
$.ajax({url:"myurl",success:function(result){
    strArr=result;
    alert(strArr); //["name1", "name2", "name3", "name4", "name5"]
}});
var arr= JSON.parse(strArr);

【问题讨论】:

  • 设置dataType选项为json,然后jQuery会自动为你解析。

标签: javascript ajax arrays


【解决方案1】:

要将字符串转换为实际的数组,只需执行JSON.parse,就像这样

var data = '["name1", "name2", "name3", "name4", "name5"]';
console.log(JSON.parse(data));
# [ 'name1', 'name2', 'name3', 'name4', 'name5' ]

可以确认返回的对象类型,像这样

console.log(Object.prototype.toString.call(JSON.parse(data)));
# [object Array]

你的实际代码应该是这样的

$.ajax({
    url: "myurl",
    success: function(result) {
        alert(JSON.parse(result));
    }
});

【讨论】:

  • 这似乎适用于控制台,但如何在我上面的代码中应用它?抱歉,我对 javascript 还很陌生
  • @DnR success:function(result){ var array = JSON.parse(result); }
  • 我需要在我的页面中包含任何文件吗?似乎无法识别JSON.parse
  • @DnR JSON.parse 是 ECMA 脚本规范的一部分,因此无需包含任何内容 :-)
  • @DnR 可以,但是值会异步填写。所以最后一行不会是你程序中实际执行的最后一行代码。首先,JS 会向 url 发送一个 AJAX 请求,然后它不会等待结果。它将处理其余的语句。因此,var arr= JSON.parse(strArr); 被执行,此时字符串变量为空。稍后,当该 AJAX 请求的响应返回时,将执行传递给 success 的函数。
猜你喜欢
  • 2011-12-11
  • 1970-01-01
  • 2016-11-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-10
  • 2011-05-15
相关资源
最近更新 更多