使用以下函数时出现以下错误:
加载资源失败:服务器响应状态为 414 (Request-URI Too Large)。
当数据不太长时,该函数工作正常,问题是,在某些情况下,rez 和 com 变得冗长,而 ajax 似乎使用的是 GET,而不是 POST。任何人都可以向我解释为什么在我声明 POST 时 ajax 使用 GET 吗?我该如何防止呢?谢谢你。
jQuery('#buton_submit').click(function() {
var rez = {};
var com = {};
jQuery("input[name^='sb-rez']:checked").each(function() {
rez[jQuery(this).attr('name').substr(7)] = jQuery(this).val();
});
jQuery("textarea[name^='sb-com']").each(function() {
if (jQuery(this).val().length > 0) {
com[jQuery(this).attr('name').substr(7)] = jQuery(this).val();
}
});
jQuery.ajax({
url: '/wp-admin/admin-ajax.php',
data:{
'action':'admin_event',
'fn':'saveResultsEvent',
'method': 'POST',
'contentType': 'application/x-www-form-urlencoded;charset=UTF-8',
'processData': false,
'r': rez,
'c': com,
'pid': jQuery('div[id="content"] :first-child').attr('id').substr(5)
},
success: function(data){
jQuery('#arata_mesaje').html(data);
jQuery('#arata_mesaje').show('fast');
jQuery('#arata_mesaje').delay(3000).hide(1000);
},
error: function(errorThrown){
alert('Error printed in console.');
console.log(errorThrown);
}
});
});
正确的 .ajax 调用,以供将来参考(尝试将其发布为答案,但由于缺乏声誉,我无法再 8 小时回答我自己的问题):
jQuery.ajax({
url: '/wp-admin/admin-ajax.php',
type: 'POST',
contentType: 'application/x-www-form-urlencoded;charset=UTF-8',
processData: false,
data:{
'action':'admin_event',
'fn':'saveResultsEvent',
'r': rez,
'c': com,
'pid': jQuery('div[id="content"] :first-child').attr('id').substr(5)
},
success: function(data){
jQuery('#arata_mesaje').html(data);
jQuery('#arata_mesaje').show('fast');
jQuery('#arata_mesaje').delay(3000).hide(1000);
},
error: function(errorThrown){
alert('Error printed in console.');
console.log(errorThrown);
}
});
问题是我错误地在数据数组中声明了类型/方法和 contentType,而不是作为 ajax 调用的参数,默认情况下方法是 GET。