以下の関数を使用すると、次のエラーが発生します。
リソースのロードに失敗しました:サーバーはステータス414(Request-URI Too Large)で応答しました。
データが長すぎない場合、この関数は正常に機能します。問題は、場合によっては、rezとcomが長くなり、ajaxがPOSTではなくGETを使用しているように見えることです。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);
}
});
問題は、ajax呼び出しのパラメーターとしてではなく、データ配列でタイプ/メソッドとcontentTypeを誤って宣言していたことでした。デフォルトでは、メソッドはGETです。