如何将post请求的响应存储到变量中? jQuery

3

编辑: 这就是我需要的:

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

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

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

旧文章: 我使用这个函数来返回帖子的响应:

$.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

如何仅将响应存储在变量中?

你为什么要把所有的函数都放在 $ 里面? - SLaks
如果出现“$.functionname不是函数”的错误,请检查代码。 - robertdd
1
哭泣。$ 是 jQuery 对象。如果您正常定义函数(function bar () { alert('Foo'); }),则不使用 $.bar() 调用该函数,而是直接使用 bar() - Matt
1个回答

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);
    });
};

如何进行回调以接收服务器的响应? 您能提供一个简单的例子吗?谢谢! - robertdd
回调参数是一个函数的名称,在 post 函数完成后将被执行。我可以在那里放置一个函数的名称吗? - robertdd
你可以传递一个匿名函数,就像我所做的那样,或者是一个常规函数的名称。(不带 (),因为那会_调用_该函数) - SLaks
“:((”没有调用alert()函数跳过,但执行了post调用。 - robertdd
你的问题我这边可以运行正常(http://jsbin.com/okade3/edit)。你使用的jQuery版本是多少? - SLaks
显示剩余5条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接