2011-12-28 68 views
0

我在jQuery中使用jsonp並且運行良好。但是代碼的執行順序並不是我所期望的。我的意思是我有一個功能爲:與jQuery一起使用jsonp時的代碼的執行順序

function is_server_alive() { 
    var result; 
    console.log("beginning of function result" + result); 
    $.ajax({ 
     url: server + "/is_alive", 
     async: false, 
     dataType: "jsonp", 
     jsonp: "callback", 
     success: function(JSON){ 
      result = JSON.return; 
      console.log("is_server_alive result: " + result); 
     }, 
     error: function(XMLHttpRequest, textStatus, errorThrown){ 
      console.log("server is dead " + textStatus); 
     }, 
    }); 
    console.log("end of function result: " + result); 
    return result; 
} 

我嘗試返回結果變量。但由於所有事情發生後的ajax請求,我無法做到這一點。返回值似乎沒有定義。控制檯輸出如下:

beginning of function result: undefined 
end of function result: undefined 
is_server_alive result: 0 

我嘗試異步的真/假和沒有任何改變。我怎樣才能返回結果的變量或更改執行順序,使輸出成爲:

beginning of function result: undefined 
is_server_alive result: 0 
end of function result: 0 

回答

0

您可以添加其他設置,complete,到$.ajax功能:

function is_server_alive() { 
    var result; 
    console.log("beginning of function result" + result); 
    $.ajax({ 
     url   : server + "/is_alive", 
     async  : false, 
     dataType : "jsonp", 
     jsonp  : "callback", 
     success  : function(JSON){ 
      result = JSON.return; 
      console.log("is_server_alive result: " + result); 
     }, 
     error  : function(XMLHttpRequest, textStatus, errorThrown){ 
      console.log("server is dead " + textStatus); 
     }, 
     complete : funciton() { 
      console.log("end of function result: " + result); 
      return result; 
     } 
    }); 

} 
+0

但確實'返回結果;'在完整的處理程序中實際上會作爲'is_server_alive'的返回嗎? – 2011-12-28 13:15:44

+0

這隻會改變控制檯輸出,但不會改變執行順序。仍然在eaxhing之後執行ajax請求。 – alpert 2011-12-28 14:34:32