我正在使用WordPress插件。有许多jQuery Ajax调用,除了一个之外所有调用都成功。这恰好是onbeforeunload,我希望不是问题,但这里是代码:
jQuery(window).on('beforeunload', function() {
var invoiceData = {
action: 'update_invoice_data',
invoice_mode: jQuery('#invoice_mode').val()
};
jQuery.ajax({
type:"post",
url:ajaxurl,
data:invoiceData,
error:function(request, textstatus, errorThrown) {
console.log('invoice data pass failed');
console.log(request);
console.log(textstatus);
console.log(errorThrown);
},
success:function(result, status, xhr) {
console.log('invoice data passed');
},
});
});
(invoiceData变量中传递了更多数据,但即使我删除除action='update_invoice_data'
之外的所有内容,它仍然会失败。)
textstatus
只是“错误”而errorThrown
是一个空字符串。在其他地方的头文件中我有:
add_action('wp_ajax_update_invoice_data', 'update_invoice_data');
然后函数update_invoice_data
在其他地方。在同一个标题中,其他函数还有其他add_action
行可以正常工作,并且找到了同一文件update_invoice_data
中的其他函数,它们可以正常工作。
所以我的问题是:
在onunload函数中执行Ajax调用是不合法的吗?如果是这样,有办法吗?
如果合法,我做错了什么?
答案 0 :(得分:0)
这恰好是onbeforeunload,我希望不是问题
这正是问题所在。请求在完成之前被中止。使其同步以解决此问题。
async: false