如何从变量中的post返回响应? jQuery的

时间:2010-04-25 14:43:22

标签: php jquery return-value

编辑: 这就是我需要的:

sendpost = function(a,b,c){
    return jQuery.post('inc/operations.php', {a:b}, c, "json");
},

rotate = function(callback){
    //....
    alert(callback);
}

sendpost('operation', 'test', rotate)

旧帖子: 我使用此函数返回post的响应:

$.sendpost = function(){
    return jQuery.post('inc/operations.php', {'operation':'test'}, "json");
},

我想做这样的事情:

在:

$.another = function(){
  var sendpost = $.sendpost();
  alert(sendpost);
}

但我明白了:[object XMLHttpRequest]

如果我用:

打印对象
jQuery.each(sendpost, function(i, val) {
  $(".displaydetails").append(i + " => " + val + "<br/>");
});

我得到:

details  abort => function () { x && h.call(x); g("abort"); }
dispatchEvent => function dispatchEvent() { [native code] }
removeEventListener => function removeEventListener() { [native code] }
open => function open() { [native code] }
setRequestHeader => function setRequestHeader() { [native code] }
onreadystatechange => [xpconnect wrapped nsIDOMEventListener]
send => function send() { [native code] }
readyState => 4
status => 200
getResponseHeader => function getResponseHeader() { [native code] }
responseText => mdaaa from php

如何仅返回变量中的响应?

1 个答案:

答案 0 :(得分:4)

这是不可能的。

AJAX调用是异步的,这意味着您的代码会在服务器发送回复之前继续运行。

执行return语句时,服务器尚无回复。

可以进行同步AJAX调用,但它会完全冻结浏览器,应该不惜一切代价避免。

相反,你应该让你的函数接受一个回调,它将接收服务器的响应,并从$.post的回调中调用该回调。 (这就是jQuery的AJAX函数返回值的方式)

编辑:例如:

$.sendpost = function(callback) {
    return jQuery.post('inc/operations.php', {'operation':'test'}, callback, "json");
};

$.another = function() { 
    $.sendpost(function(response) {
        alert(response);
    });
};