在jquery中通过.post()传递参数是否有限制?


Are there limitations to passing parameters through .post() in jquery

我在我的CMS应用程序中相当广泛地使用.post()。下面的工作代码示例传递13(在我的应用程序中最多)参数到processing.php文件,该文件工作良好。

当需要传递更多参数时,我简单地使用了action形式属性,它也工作得很好。

然而,我有一个应用程序,需要传递38个变量,包括大字符串,但同时对action file执行检查,如果检查失败,我需要触发js confirmation alert来继续或取消。

我不太确定如何从processing.php文件中触发js confirmation alert,以及如果用户取消,如何返回原始文件并将信息完整地输入到表单中。

如果我使用.post(),我确实知道如何实现这一点。

我的问题是:

通过以下所述的.post()发送给processing.php的参数数量是否有任何限制,或者我应该采取其他方法来处理上述问题?如果是的话,你有什么建议?

工作代码示例

// code element
    $( "#updateDefaultCodeButton" ).click(function(){
        var url = $('#updateDefaultCodeURL').val();     
        var code_font_family = $('#code_font_family').val(); 
        var code_font_color = $('#code_font_color').val();
        var code_font_weight = $('#code_font_weight').val();
        var code_font_size = $('#code_font_size').val();
        var code_bg_color = $('#code_bg_color').val();
        var code_pad_t = $('#code_pad_t').val(); 
        var code_pad_r = $('#code_pad_r').val(); 
        var code_pad_b = $('#code_pad_b').val();
        var code_pad_l = $('#code_pad_l').val(); 
        var code_w_pad_t = $('#code_w_pad_t').val(); 
        var code_w_pad_r = $('#code_w_pad_r').val(); 
        var code_w_pad_b = $('#code_w_pad_b').val();
        var code_w_pad_l = $('#code_w_pad_l').val(); 
        var postit = $.post( url, {
            code_font_family:code_font_family, 
            code_font_color:code_font_color,
            code_font_weight:code_font_weight,
            code_font_size:code_font_size, 
            code_bg_color:code_bg_color,
            code_pad_t:code_pad_t, 
            code_pad_r:code_pad_r, 
            code_pad_b:code_pad_b,
            code_pad_l:code_pad_l,
            code_w_pad_t:code_w_pad_t, 
            code_w_pad_r:code_w_pad_r, 
            code_w_pad_b:code_w_pad_b,
            code_w_pad_l:code_w_pad_l
        });     
        postit.done(function( data ) {window.location.replace("../generator.php?returnto=manage/global-styles-manage.php");});      
    });

php.ini包含post_max_sizemax_input_vars,这两者都可以影响您可以发布到一个页面的数量

http://php.net/manual/en/ini.core.php ini.post-max-sizehttp://php.net/manual/en/info.configuration.php ini.max-input-vars

如果您发现自己超过了限制(这将在错误日志中生成警告),您可以调整两者。

38个变量应该是好的- max_input_vars默认为1000,post_max_size默认为2MB(我认为),所以你的文本字符串必须是非常大。

JQuery Ajax本身没有任何限制。请求大小在服务器上是有限的,但是通过不同的配置取决于您的环境。

Apache:

  • LimitRequestBody,默认为2Gb左右,64位可能更大,检查错误日志了解详细信息。
PHP:

  • post_max_size与POST大小直接相关
  • upload_max_filesize可能不相关,不确定
  • max_input_time,如果POSt时间太长
  • max-input-nesting-level如果你的数据是一个有很多子级别的数组
  • max_execution_time,但很确定不是
  • memory_limit,因为你可能达到超过子进程允许内存的大小
  • max_input_vars,如果你的数据数组有很多元素

摘自:https://stackoverflow.com/a/9691395/2853903