2011-05-09 150 views
1

建立VAR我需要创建一个函数,并创建Ajax响应一个js变种我可以做这样的事情:从Ajax响应

function myFunction() { 
    $.ajax({ 
    type: "POST", 
    url: "mypage.php", 
    data: "name=John&location=Boston", 
    success: function(data){ 
     var newVar = (data); 
    } 
    }); 

    return newVar; 
} 

和mypage.php

// db insert 
echo mysql_insert_id(); // return ID of the latest insert 

我在这种情况下,不确定使用数据是否合适。

+1

您应该最有可能使用成功方法中的数据作为参数调用回调函数,但尚不清楚您要如何处理此示例。 PHP是如何相关的? 'return newVar'是错误的。 – mraaroncruz 2011-05-09 21:02:48

回答

4
$.ajax({ 
    type: "POST", 
    url: "mypage.php", 
    data: "name=John&location=Boston", 
    success: function(data){ 
     // <- I'm asynchronous !!! 
     var newVar = (data); 
    } 
}); 

// <- I return before you set me! 
return newVar; 

AJAX请求与服务器交谈,然后在一段时间后调用success方法。您可以强制success在请求完成之前不会运行。这意味着你不能返回任何数据。

相反,您需要传递回调并使用异步编程。

你想要做的就是这样。

function myFunction(callback) { 
    $.ajax({ 
     type: "POST", 
     url: "mypage.php", 
     data: "name=John&location=Boston", 
     success: function(data) { 
      callback(data); 
     } 
    }); 
} 

myFunction(function (data) { 
    // do stuff. 
}); 

PHP看起来不错。

作为替代方案,您可能更愿意使用jQuery的延迟语法。

function myFunction() { 
    return $.ajax({ 
     type: "POST", 
     url: "mypage.php", 
     data: "name=John&location=Boston" 
    }); 
} 

$.when(myFunction()).then(function(data) { 
    // handle data return 
    someOtherFunction(data); 
}, function(error) { 
    // handle ajax error. 
}); 
+0

这很好,谢谢。如何从“数据”创建一个var? – santa 2011-05-09 22:29:07

+0

@santa为什么你需要一个变量。处理函数 – Raynos 2011-05-09 22:30:48

+0

中的数据我需要它传入另一个函数。我想我明白了。 var newVar = data;我试图在这个函数之外获得新的变量。 – santa 2011-05-09 22:39:24

0
  • 关闭不具备公开程度来newVar
  • 您不能从AJAX函数返回,因为它是异步完成的。
0

的另一个替代使用when由Raynos的建议,你可以设置asyncfalse