2013-10-02 68 views
-1

如何在代碼中只使用1個ajax函數,只有在ajax完成時纔會返回數據。
實施例:一個帶異步的ajax函數:true

var Jurl = json.php, Jdata='one:AAA';  
jsonRet = json(Jurl, Jdata);  
if(jsonRet) {  
    $('body').prepend(data);  
} else { 
    Jurl = anotherJson2.php; 
    Jdata='one:BBB'; 
    jsonRet2 = json(Jurl,Jdata); 
    if(jsonRet2) { 
... 
    } 
} 
json(Jurl, Jdata) { 
    $.getJSON(Jurl, {Jdata} , function(data) { 
    if(data ==='finish') { 
     return false; 
    } else { 
     return data; 
    } 
} 

但是,我不能使用此代碼,我必須創建一些另一個(一個)與jsonRet2功能。所以代碼將不會優化...我想要最少的代碼。

+0

這是一個很大的語法錯誤。在詢問你的代碼的工作情況之前,請修復它們。 – Bergi

+0

可能重複[如何從AJAX調用返回響應?](http://stackoverflow.com/questions/14220321/how-to-return-the-response-from-an-ajax-call) – Bergi

回答

0

你有一個語法錯誤,就這些。

if(data['end']===true) { ... } 

編輯

你還需要使用一個承諾,從一個異步調用返回一個值,請看下面的例子:

$.getJSON(Jurl, {Jdata} , function(data) { 
    var dfd = $.Deferred(); 

    if(data['end']==='true') { 
     dfd.reject(false); 
    } else { 
     dfd.resolve(data); 
    } 

    return dfd.promise(); 
}); 
+0

Sry,我忘了使用「」。這僅僅是一個例子,它不是我的工作代碼。 – fdrv

+0

您缺少===運算符。您只是將值分配給數據['end']而沒有對其進行比較。此外,與異步的東西是,你不能返回一個值,你需要使用一個承諾,讓我給你一個例子。 –

+0

謝謝你的幫助和時間,我認爲這是我需要的。在我的大腦中添加了新的延遲邏輯結構=) – fdrv