JQuery:通过AJAX调用提交包含许多字段的表单

时间:2013-01-21 12:47:43

标签: php javascript jquery

我正在开始网络编程,因为到目前为止我只使用网页设计。

我的问题是我做了一项调查,显示每个部门有12个问题的表格。部门数量取决于之前称为“部分”的选择器。

因此,如果“section”有1个部门,表单可以显示12个问题字段,如果“section”有10个部门,则表单可以显示120个。

我在提交之前将数据序列化并编码到Base64:

// Setup call
    $.ajax({
      type: 'GET',
      url: 'survey_actions.php&action=save',
      data: { parameters: Base64.encode($("#mySurvey").serialize()) },
      dataType: 'text',
      beforeSend:function(){
        // Load waiting panel
        loader("on");
      },
      success:function(response){
[...]

我确定这不是干净的方法,因为我遇到了以下问题:当要填充的字段数量较少时(例如12),一切正常,但是当数字较高时(对于例子72),服务器没有收到所有数据。

字段的名称如下:“sectorID_questionID”。所以在帖子上,params字符串是:

...&1_0=X&1_1=X&1_2=X&1_3=X... 

(X是用户给出的问题的值)。

所以问题是:什么是最合适的方法来解决它并使用AJAX将大量数据发送到服务器而不进行修剪?

此致,感谢您的帮助:)

3 个答案:

答案 0 :(得分:2)

将ajax类型更改为POST,而不是GET,并从$_POST获取数据。您的数据可能超过最大查询字符串长度。

答案 1 :(得分:0)

Ajax只能在查询字符串中获取数据。因此,如果没有正确发送大数据,则可能是您的服务器/ application.platform的限制。你可能会考虑增加max_input_vars。并确保您使用POST而不是GET

答案 2 :(得分:0)

    $.ajax({
      type: "POST",
      url: "some.php",
      data: { name: "John", location: "Boston" }
    }).done(function( msg ) {
      alert( "Data Saved: " + msg );
    });

只需使用上述语法,我认为您不需要序列化数据