将jQuery.ajax()请求转换为XMLHttpRequest(普通的JavaScript)

时间:2017-07-28 作者:virtualLast

正在寻求帮助更改jQuery.ajax() 请求加入香草XMLHttpRequest 对于WordPress,但并没有真正找到我想要的。有人能帮我把下面的内容重新格式化成普通的JavaScript吗XMLHttpRequest?

$.ajax({
    data: {
        \'action\': \'work_hour_form_handler\',
        \'work_hours_start\': document.getElementById(\'work-hours--start\').value,
        \'work_hours_end\': document.getElementById(\'work-hours--end\').value,
        \'break-hours_start\': document.getElementById(\'break-hours--start\').value,
        \'break-hours_duration\': document.getElementById(\'break-hours--duration\').value,
        \'working_days\': document.getElementById(\'working-days\').value
    },
    headers: {},
    method: \'post\',
    url: fpm_ajax.ajax_url
}).done(function (data) {
    // If successful
    console.log(data);
}).fail(function (jqXHR, textStatus, errorThrown) {
    // If fail
    console.log(textStatus + \': \' + errorThrown);
});

1 个回复
最合适的回答,由SO网友:Ciprian 整理而成

这是我对它的看法,虽然有点晚,但我正在努力转换所有jQuery.ajax() 调用vanilla JavaScript,为什么不呢。

    // alpha JS request // no jQuery
    // https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/send#Example_POST
    // https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/Using_XMLHttpRequest
    var request = new XMLHttpRequest();

    request.open(\'POST\', fpm_ajax.ajax_url, true);
    request.setRequestHeader(\'Content-Type\', \'application/x-www-form-urlencoded;\');
    request.onload = function () {
        if (this.status >= 200 && this.status < 400) {
            // If successful
            console.log(this.response);
        } else {
            // If fail
            console.log(this.response);
        }
    };
    request.onerror = function() {
        // Connection error
    };
    request.send(\'action=work_hour_form_handler&work_hours_start=\' + document.getElementById(\'work-hours--start\').value + \'&work_hours_end=\' + document.getElementById(\'work-hours--end\').value);
    //
请注意,通过使用console.log(this) 您可以看到实际响应和任何抛出的错误。还请注意,我没有包括您的所有数据,只有前两个。

这段代码来自我的WordPress插件的工作解决方案。我在这里写了更详细的内容:How to replace jQuery.ajax() with vanilla JavaScript in WordPress.

享受

结束

相关推荐

WP-AJAX VS WP REST API:从外部向网站请求使用什么?

我有关于WP的网站。此外,我在一个web服务中有一个帐户。我需要从这个web服务获得一个到我网站特定地址的请求。这是一个我想用自己的插件处理的webhook。外部对网站的请求使用什么,wp-ajax 或WP REST API? 我对处理这个请求的速度不感兴趣。我对安全方面的正确方式和普遍接受的做法感兴趣。