2

以下の関数を使用すると、次のエラーが発生します。

リソースのロードに失敗しました:サーバーはステータス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です。

4

1 に答える 1

0

タイプミスをしました - jQuery.ajax() hereのドキュメントを見てください。したがって、リクエストは次のようになります。typemethod

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); 
    }
});
于 2012-12-10T13:26:27.633 に答える