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);
當您單擊任何#nextQ時,數組將被初始化爲空,並進行AJAX調用。由於它是一個AJAX調用,你不知道它什麼時候會返回,你不能保證這個調用會成功。您應該添加一個錯誤回調,並使用瀏覽器開發工具的Network選項卡調試調用。 –
我同意它可能沒有運行成功的財產,因爲它是失敗的,但它昨晚工作,這就是爲什麼我難倒。 – Badrush
有關如何實現失敗回調的詳細信息,請參閱https://api.jquery.com/jquery.get/#jQuery-get-settings。並使用開發人員工具來檢查AJAX調用 - - 可以在那裏找到錯誤。它昨晚運行並且沒有任何更改的事實僅指向服務器/網絡/遠程文件問題。記住AJAX是關於調用外部資源的,所以它不僅僅是你需要擔心的代碼。 –