2

使用以下函数时出现以下错误:

加载资源失败:服务器响应状态为 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。

4

1 回答 1

0

您打错了-查看jQuery.ajax() 此处的文档,您将看到您定义了与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); 
    }
});
于 2012-12-10T13:26:27.633 回答