我正在尝试创建一个生成 AJAX 调用并返回响应的函数。
function msg(message)
{
send = new XMLHttpRequest();
send.open("POST", "msghandler.php", false);
send.setRequestHeader("Content-type","application/x-www-form-urlencoded");
send.send("msg="+encodeURI(message));
return send.responseText;
}
正如您所看到的,现在我正在使用同步调用,但这不是最佳解决方案,因为在我的调试中很常见,服务器端出现问题并最终卡住我的浏览器。有没有办法使调用异步并且让函数返回响应?
最佳答案
你无法返回不存在的东西。但是,如果您担心永远缩进回调,则可以返回一个 Promise 对象。这是一个非常简单的例子:
function msg(message) {
var done = function(){};
send = new XMLHttpRequest();
send.open("POST", "msghandler.php", true);
send.setRequestHeader("Content-type","application/x-www-form-urlencoded");
send.send("msg="+encodeURI(message));
send.onreadystatechange = function() {
if(send.readyState == 4){
done(send.responseText);
}
});
return {
ready: function(fn) { done = fn; }
};
};
msg('foo').ready(function(response) {
alert(response);
});
许多框架已经实现了延迟对象。
关于javascript - 如何创建一个执行 AJAX 调用的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12062822/