1

今まではウェブデザインしか使っていなかったので、ウェブプログラミングを始めています。

私の問題は、部門ごとに12の質問があるフォームを示す調査を行ったことです。部門の数は、「セクション」と呼ばれる以前のセレクターによって異なります。

したがって、フォームには、「セクション」に1つの部門がある場合は12の質問フィールドを表示でき、「セクション」に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を使用してサーバーに巨大なデータを送信するための最も適切な方法は何ですか?

心から、あなたの助けに感謝します:)

4

3 に答える 3

2

からデータを取得するのPOSTではなく、ajaxタイプをに変更します。データがクエリ文字列の最大長を超えている可能性があります。GET$_POST

于 2013-01-21T12:53:11.417 に答える
0

Ajaxはクエリ文字列のデータのみを取得できます。したがって、大きなデータが適切に送信されていない場合は、server/application.platformの制限である可能性があります。max_input_varsを増やすことを検討することをお勧めします。また、GETではなくPOSTを使用するようにしてください

于 2013-01-21T12:53:28.897 に答える
0
    $.ajax({
      type: "POST",
      url: "some.php",
      data: { name: "John", location: "Boston" }
    }).done(function( msg ) {
      alert( "Data Saved: " + msg );
    });

上記の構文を使用するだけで、データをシリアル化する必要はないと思います

于 2013-01-21T13:06:21.410 に答える