簡體   English   中英

將JSON數據保存到數組中

[英]Saving JSON data into an array

有什么方法可以從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 ] );
    });
});

注意,在$.each函數內部,您可以引用this ,它引用當前迭代的項目。 直接使用此方法(通過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]);
        });
    });
});

如果沒有,請發表評論。

編輯: BenM更快

編輯:

這也可以,但是我不能在$ .getJSON之外使用數組

這是因為您可能正在使用如下代碼:

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

console.log(questions);

由於javascript是一種異步語言,因此控制台日志調用發生在請求json之后的推送之前。 您可以在此處了解更多信息。

$(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請求非常相似)。

知道這一點后,您應該自己找到解決方案(例如在推送數組后調用傳遞的函數)。 如果沒有評論。

編輯:將鏈接更改為其他更好的頁面。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM