javascript - 如何创建一个执行 AJAX 调用的函数?

标签 javascript ajax

我正在尝试创建一个生成 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/

相关文章:

javascript - 循环改变部分元素的样式

javascript - jquery.form.js 中的 .ajaxSubmit 不使用数据选项

javascript - skip_before_filter :authenticate_user! 不适用于 AJAX 调用

javascript - 如果通过 $.ajax 请求,则缺少安全 URL 的身份验证提示

javascript - 如何在不重叠的情况下每隔一段时间进行一次 Ajax 调用?

javascript - React 如何让组件检测路由变化

javascript - 使用javascript获取文件的目录

javascript - 选择下拉列表时如何更改文本区域的文本

javascript - TypeScript 和文件上传类型

javascript - 如何在表单本身之外提交表单