如何在WordPress中使用ajax发送大的POST数据?
使用下面的函数时,我遇到以下错误: 加载资源失败:服务器响应状态为414(请求URI太大) 当数据不太长时,函数可以正常工作,问题是,在某些情况下,rez和com变得很长,ajax似乎使用get,而不是POST。 有人能向我解释为什么在我声明POST时ajax使用GET吗?我该如何防止这种情况?多谢各位如何在WordPress中使用ajax发送大的POST数据?,wordpress,jquery,post,get,Wordpress,Jquery,Post,Get,使用下面的函数时,我遇到以下错误: 加载资源失败:服务器响应状态为414(请求URI太大) 当数据不太长时,函数可以正常工作,问题是,在某些情况下,rez和com变得很长,ajax似乎使用get,而不是POST。 有人能向我解释为什么在我声明POST时ajax使用GET吗?我该如何防止这种情况?多谢各位 jQuery('#buton_submit').click(function() { var rez = {}; var com = {}; jQuery("input[
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小时内无法回答自己的问题):
问题是我在数据数组中错误地声明了类型/方法和contentType,而不是作为ajax调用的参数,默认情况下,方法是GET。您输入了一个错误-查看
jQuery.ajax()
的文档,您将看到您定义了与type
键一起使用的方法,而不是方法
。因此,您的请求应该如下所示:
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);
}
});
你有一部分是对的。我不记得我从哪里得到这个例子,但我没有质疑它,因为它是有效的。我需要在数据外部(而不是其中)声明类型、contentType和processData。谢谢你的快速回复。很有帮助。你能发布你最后的
.ajax
调用吗?如果其他人遇到同样的问题,你能接受它作为正确的答案吗?谢谢。我稍后发布为编辑。试图将其作为评论发布,但太长。我需要做其他事情吗?哦,既然你不能马上回答,那就在那8个小时后回答吧(如果你记得这么做的话:),然后接受它:)
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);
}
});