2016-03-05 65 views
-1

1)如果我嘗試在Chrome的調試模式下運行,則會跳過此AJAX函數 2)當我正常運行它時,AJAX會正常工作,輸出到控制檯的長度64。然而,AJAX調用後,同一陣列成爲空和長度變爲0

我甚至用$(document).ready代替$("#nextQ").click(function(){

$("#nextQ").click(function(){ 

var Quotes = []; 
var ID = []; 
var Tag = []; 
var seen = []; 
//Get quotes from JSON file 
    $.ajax({ 
       url: '../facts.json', 
       datatype: 'json', 
       type: 'get', 
       success: function(data){ 
           console.log(data); 
            console.log("successfully imported the JSON file"); 
           console.log(data.length); //Used to return 64 
           totalQ = data.length; 
           for (i = 0; i < totalQ; i++){ 
              ID[i] = data[i][0]; 
              Tag[i] = data[i][1]; 
              Quotes[i] = data[i][2]; 
              seen[i] = data[i][3]; 
          } 
           console.log(Quotes.length); 
        } 
     }); 


//----------------------- 
//This is where it all breaks down..the following totalQ is empty 
// 

var Quote = new String; 
var qnumber = 0; 
var totalQ //The total number of available quotes to choose from 
var Qrem //Remaining unseen quotes 
var lock = new Boolean; //This will be true if the quote is already seen 
var CurrentImage = String; 

totalQ = Quotes.length - 1; //This length is returning 0 and totalQ = -1 
console.log("TotalQ = " + totalQ); 
ChooseQuote(0,totalQ); 
+0

當您單擊任何#nextQ時,數組將被初始化爲空,並進行AJAX調用。由於它是一個AJAX調用,你不知道它什麼時候會返回,你不能保證這個調用會成功。您應該添加一個錯誤回調,並使用瀏覽器開發工具的Network選項卡調試調用。 –

+0

我同意它可能沒有運行成功的財產,因爲它是失敗的,但它昨晚工作,這就是爲什麼我難倒。 – Badrush

+0

有關如何實現失敗回調的詳細信息,請參閱https://api.jquery.com/jquery.get/#jQuery-get-settings。並使用開發人員工具來檢查AJAX調用 - - 可以在那裏找到錯誤。它昨晚運行並且沒有任何更改的事實僅指向服務器/網絡/遠程文件問題。記住AJAX是關於調用外部資源的,所以它不僅僅是你需要擔心的代碼。 –

回答

0

試圖嘗試更換:

datatype: 'json', 

有:

dataType: 'json', 

而且別忘了javascript是ac敏感的編程語言。你也可以嘗試在你的AJAX調用中添加一個錯誤處理程序來查看它是否因某種原因被調用。例如,如果遠程端點返回一些無法解析的無效JSON,則會出現錯誤。

+0

我會嘗試,但我很懷疑,因爲它昨天晚上工作,沒有我改變這一切。 – Badrush

+0

抱歉沒有工作。 – Badrush

+0

jQuery規範將其顯示爲dataType。 –

相關問題