wordpress - 如何在 WordPress 中使用 ajax 发送大量 POST 数据?

标签 wordpress jquery post get

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

无法加载资源:服务器响应状态为 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/

相关文章:

php - 无法使用 Postman 将 POST 变量发送到本地主机上的 php 脚本

php - 在独特的类别存档页面上隐藏主要类别标题

wordpress - Google PageSpeed Insights API 无法连接到我的 Wordpress 博客来测试速度

javascript - 展开维基百科类别树的所有类别

jquery - 一页上不会有超过 9 个 Accordion 吗?

php - Ajax 响应出错

wordpress - 在 docker 容器中更新 wordpress 插件

php - Woocommerce 获取下一个/上一个产品

javascript - 使用 jquery 动态删除表行不起作用

php - jQuery 使用 jQuery ajax json, php 将项目填充到 Select 中