2011-03-30 112 views

回答

3

我相信你將不得不使用同步模式,並使用單獨的一個變量,用於存儲返回值。

function imageExists(path){ 
    var isSuccess; 
    $.ajax({ 
     url: path, 
     type: 'HEAD', 
     async: false, 
     error: 
      function(){ 
       isSuccess = false; 
       return false; 
      }, 
     success: 
      function(){ 
       isSuccess = true; 
       return true; 
      } 
    }); 
    return isSuccess; 
}
+0

非常感謝你,工作perjekt,不知道回調函數可以訪問來自調用函數的變量,或者像在這種情況下從調用者,調用者... – haemse 2011-03-30 23:01:29

+0

Async false不建議雖然 – JonH 2015-08-22 00:02:03

4

你將要返回AJAX調用無論是在success功能或error函數的結果,所以無論功能下一步應該叫應該從該點被調用。因爲一個AJAX請求是異步的(我建議不要使它成爲一個阻塞同步調用),你提出請求但不知道它什麼時候會返回;當它返回時它會打電話給你,所以你只需要提供一些東西來打電話。

function imageExists(path){ 
    $.ajax({ 
     url: path, 
     type: 'HEAD', 
     error: 
      function(){ 
       iveReturned(false); 
      }, 
     success: 
      function(){ 
       iveReturned(true); 
      } 
    }); 
} 

function iveReturned(result) { 
    // code here to do something following AJAX response. 
} 
+0

是的 - 調用者在回調被觸發之前返回它將要發生的任何事情。 – 2011-03-30 22:35:33

+0

只有當它的異步...如果不是它將暫停執行,直到它返回。 – CrazyDart 2011-03-30 22:39:09

+0

@CrazyDart - 正是我所說的:) – 2011-03-30 22:41:17

1

創建一個var來保存全局級別的響應,然後將異步設置爲false。您需要在成功或錯誤函數中設置該變量。

http://api.jquery.com/jQuery.ajax/

function imageExists(path){ 
myVar = null; 
$.ajax({ 
    url: path, 
    type: 'HEAD', 
    error: 
     function(){ 
      myVar = false; 
     }, 
    success: 
     function(){ 
      myVar = true; 
     }, 
    async: false 
}); 
} 
+0

謝謝你,作品perfekt! – haemse 2011-03-30 23:02:01