Javascript 将JSON数据保存到数组中

Javascript 将JSON数据保存到数组中,javascript,jquery,json,ajax,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)

是否有任何方法可以从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);       
});
}))


在你的例子中,
questionJ
被视为一个字符串,在没有看到你的
setArray()
函数的情况下,很难确定出了什么问题(例如,我不知道你是否在解析这个函数中的字符串)

但是,假设您希望
questionJ
是一个数组数组,那么以下操作应该可以:

questionJSONS = [ ];

$.getJSON('http://localhost:8080/audioMillionaire/test2.php', function(result){
    $.each(result, function() {
        questionJSONS.push( [ this.qid, this.description, this.a ] );
    });
});
请注意,在
$中,每个
函数都可以引用
,它引用当前迭代的项。直接使用此方法(使用
push()
和数组数据结构),还可以从JSON中保留数据类型


此外,由于您没有在代码段内部直接与DOM交互,因此不需要将其包装在
DOMReady
处理程序中

在您的示例中,
questionJ
被视为一个字符串,在没有看到您的
setArray()
函数的情况下,很难确定出了什么问题(例如,我不知道您是否在解析此函数中的字符串)

但是,假设您希望
questionJ
是一个数组数组,那么以下操作应该可以:

questionJSONS = [ ];

$.getJSON('http://localhost:8080/audioMillionaire/test2.php', function(result){
    $.each(result, function() {
        questionJSONS.push( [ this.qid, this.description, this.a ] );
    });
});
请注意,在
$中,每个
函数都可以引用
,它引用当前迭代的项。直接使用此方法(使用
push()
和数组数据结构),还可以从JSON中保留数据类型


此外,由于您没有在代码段内部直接与DOM交互,因此不需要将其包装在
DOMReady
处理程序中

我想这就是你的意思:

$(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]);
        });
    });
});
如果没有,请评论

编辑:速度更快

编辑:


这也可以,但我不能使用$.getJSON之外的数组

这是因为您可能正在使用以下代码:

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

console.log(questions);
因为javascript是一种异步语言,所以控制台日志调用发生在请求json之后的推送之前。你可以阅读更多关于它的内容

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

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


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

我想这就是你的意思:

$(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]);
        });
    });
});
如果没有,请评论

编辑:速度更快

编辑:


这也可以,但我不能使用$.getJSON之外的数组

这是因为您可能正在使用以下代码:

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

console.log(questions);
因为javascript是一种异步语言,所以控制台日志调用发生在请求json之后的推送之前。你可以阅读更多关于它的内容

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

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


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

在您的示例中,
questionJ
是一个字符串。请向我们展示您的
setArray()
函数。在您的示例中,
questionJ
是一个字符串。请向我们展示您的
setArray()
函数。感谢您的回答,它可以工作,但只能在$.getJSON内声明数组问题jsons,而我不能在$.getJSON外使用它,我实际上需要它。P.S这是我第一次使用stackoverflow提问,因此我可能在格式化内容时遇到问题:P.@Besnikani您可以删除
QuestionsJSON
前面的
var
定义,将其转换为一个全范围变量。这应该可以解决您的问题。它仍然不起作用,当I console.log它时,它只显示两个空方括号,当I console.log它位于$.getJSON中时,它打印实际的数组。您可以共享您的
test2.php
文件返回的JSON吗?您需要test2.php文件包含的内容还是我们使用getJSON调用它时返回的内容。因为我得到了我需要的数据,所以我不能在getJSON方法之外使用它们。谢谢你的回答,它可以工作,但只能在$.getJSON中声明数组QuestionJSON,我不能在$.getJSON之外使用它,我实际上需要它。P.S这是我第一次使用stackoverflow提问,因此我可能在格式化内容时遇到问题:P.@Besnikani您可以删除
QuestionsJSON
前面的
var
定义,将其转换为一个全范围变量。这应该可以解决您的问题。它仍然不起作用,当I console.log它时,它只显示两个空方括号,当I console.log它位于$.getJSON中时,它打印实际的数组。您可以共享您的
test2.php
文件返回的JSON吗?您需要test2.php文件包含的内容还是我们使用getJSON调用它时返回的内容。因为我得到了所需的数据,所以我不能在getJSON方法之外使用它们。这也可以,但我不能在$.getJSON之外使用数组。这也可以,但我不能在$.getJSON之外使用数组