无法从jQuery AJAX Success函数返回

时间:2010-12-05 15:04:46

标签: javascript jquery ajax scope

嘿伙计们,我正在构建一个需要在关闭AJAX请求之前访问服务器时间的应用程序,唯一的方法就是能够拥有一个使用AJAX从服务器请求时间的函数,所以在我的函数中,我有以下代码:

$.ajax({
    type:"GET",
    url:"app/time.php", 
        success: function(html){ return html; } });

本身代码很好,但实际上,我无法访问返回的HTML,这意味着数据对我来说毫无用处。我已经尝试将数据发送到另一个函数,甚至回到相同的函数,它只是增加了我认为不需要的复杂性。我也尝试将HTML的值设置为另一个变量,然后使用,但这在函数之外不起作用。

所以我问是否有一种简单的方法可以从AJAX请求中访问返回的“html”变量,这样我就可以在页面上设置等于函数的变量了?

2 个答案:

答案 0 :(得分:1)

这样做:

 function getTime() {

       $.ajax({
        type:"GET",
        url:"app/time.php", 
            success: function(html){ setTime(html); } });
    }

    function setTime(time){
    //do what ever you want with time
    }

当你调用时间getTime()时,将调用ajax并调用函数setTime(),并通过其参数获得时间。

或者你可以这样做

function getTime(){

   $.ajax({
    type:"GET",
    url:"app/time.php", 
        success: function(time){ // do what ever with time ; } });
}

我认为这种方式更容易,但如果你有一个很长的功能,那么我认为前一个功能更清晰。

答案 1 :(得分:0)

您无法从那里返回值。它是一个异步函数,在XHR请求成功完成时触发。你需要在这里调用另一个回调:

 function getTime(cb) {
      .ajax({
         type:"GET",
         url:"app/time.php", 
         success: function(html){ cb(html); } 
      });
 }

 getTime(function(html) {
    // do something with html
 });