使用以下函数时出现以下错误:
无法加载资源:服务器响应状态为 414(请求 URI 太大)。
当数据不太长时,该函数工作正常,问题是,在某些情况下,rez 和 com 变得很长,而 ajax 似乎使用 GET,而不是 POST。 谁能向我解释为什么 ajax 在我声明 POST 时使用 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。
最佳答案
您犯了一个拼写错误 - 请查看 jQuery.ajax()
的文档 here您将看到您定义了与 type
键一起使用的方法,而不是 method
。所以你的请求应该是这样的:
jQuery.ajax({
url: '/wp-admin/admin-ajax.php',
data:{
'action':'admin_event',
'fn':'saveResultsEvent',
'type': '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);
}
});
关于wordpress - 如何在 WordPress 中使用 ajax 发送大量 POST 数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13801806/