2011-03-30 115 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