正在寻求帮助更改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);
});
最合适的回答,由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.
享受