将JSON数据保存到数组中

时间:2016-06-10 16:30:28

标签: javascript jquery json ajax

有什么方法可以从JSON文件中获取数据并将它们保存到JavaScript中的多维数组中。 JSON文件是.php文件,标头设置为JSON。

我到目前为止已尝试过:

 var questionJSONS="";
$(document).ready(function(){
        var questionJ="";
        $.getJSON("http://localhost:8080/audioMillionaire/test2.php",function(result){
        $.each(result, function(i, item){
questionJ+= "['"+result[i].qid+"','"+result[i].description+"','"+result[i].a+"']";
  });
        setArray(questionJ);       
});

});

还有很多其他的东西,但它们似乎都没有用。

2 个答案:

答案 0 :(得分:1)

在您的示例中,questionJ被视为一个字符串,并且没有看到您的setArray()功能,很难确定哪些错误(我不&# 39;知道你是否正在解析这个函数中的字符串,例如)。

但是,假设您希望questionJ成为数组数组,则以下内容应该有效:

questionJSONS = [ ];

$.getJSON('http://localhost:8080/audioMillionaire/test2.php', function(result){
    $.each(result, function() {
        questionJSONS.push( [ this.qid, this.description, this.a ] );
    });
});

请注意,在$.each函数中,您可以引用this,它引用当前迭代的项目。直接使用此方法(带有push()和数组数据结构),数据类型也会从JSON中保留。

此外,由于您没有直接与代码段内的DOM进行交互,因此无需将其包含在DOMReady处理程序中。

答案 1 :(得分:1)

我认为这就是你的意思:

$(document).ready(function() {
    var questions = [];

    $.getJSON("http://localhost:8080/audioMillionaire/test2.php", function(result) {
        $.each(result, function(i, item) {
            questions.push([result[i].qid, result[i].description, result[i].a]);
        });
    });
});

如果没有,请发表评论。

修改:BenM更快

编辑:

  

这也可行,但我不能在$ .getJSON

之外使用该数组

这是因为你可能正在使用这样的代码:

...
        questions.push([result[i].qid, result[i].description, result[i].a]);
    });
});

console.log(questions);

因为javascript是一种异步语言,所以在请求json之后推送控制台日志调用。您可以阅读更多相关信息here

$(document).ready(function() {
    console.log("set test to old");
    var test = "old";

    setTimeout(function() {
        console.log("set test to new");
        test = "new";
        console.log("inside timeout: " + test);
    }, 3000); // runs in 3 seconds


    console.log("outside timeout: " + test);
});

这段代码应该提供一个很好的例子。函数setTimeout只等待3秒并运行该函数(很像json请求)。

知道这一点你应该自己找到一个解决方案(比如在推送数组后调用传递的函数)。如果没有评论。

编辑:更改了其他更好页面的链接。