2

私はこのフォームを持っています.jqueryロード関数を使用して詳細をロードします。ここにフォームがあります

 <form id="form1" name="form1" method="post" action="">
<div id="tableBg">
<table width="100%" border="0" cellspacing="0" cellpadding="0" class="list">
<thead>
<tr>
      <th width="39%" scope="col">WHITE LIST</th>
      <th width="61%" scope="col">&nbsp;</th>
      </tr>
      </thead>
</table>

<div style="max-height:400px; overflow-y:auto">
  <table width="100%" border="0" cellspacing="0" cellpadding="0" id="list">
    <tr class="sub_head">
      <td scope="col"><strong>REG. NO.</strong></td>
      <td scope="col"><strong>STUDENT NAME</strong></td>
      <td scope="col"><strong>GRADE</strong></td>
      <td scope="col"><strong>MESSAGE ID</strong></td>
      </tr>
    <tbody></tbody>
  </table>
</div>
<div id="PageFooter">
 <input type="submit" name="save_result" id="save_result" value="Save Results" />
</div>
</div>
</form>

別のページから以下のコードをロードします

do{
    ?>
<tr <?php echo (($x%2) != 0) ? '' : ' class="alternate-row row"' ?>>
  <td scope="col"><?php echo $learners['reg_no'];?></td>
  <td scope="col"><?php echo $learners['surname']." ".$learners['full_names']." (".$learners['nickname'].")";?></td>
  <td scope="col"><?php echo $learners['grd']." ".$learners['grade_section'];?></td>
  <td scope="col">
  <input name="sms_id[<?php echo $learners['reg_no']; ?>]" type="text" size="3" /> 
    </td>
  </tr>
<?php $x++;}while($learners = $getLearners->fetch());

このコードはフォーム内にあり、下部に送信ボタンがあります。これは process.php に投稿され、次のコードでいくつかの出力が出力されます

if(isset($_POST['submit'])){

    foreach($_POST['sms_id']  as $reg=>$msg_id){
        echo $reg. " / ".$msg_id;
    }

}

フォームがフォームから直接 process.php に投稿された場​​合、上記は両方の値を表示します

しかし、私は ajax を使用したいと思っていて、動作しない次のコードを試しました。$msg_id を投稿するだけで、他の値は投稿しません。

var formData = $("#form1").serializeArray();
            $.ajax({
                url: "models/process.php",
                type: "POST",
                data: formData,
                success: function(data)
                {
                    alert(data);
                }
            });

このコードは機能していません 誰か助けてくれますか? 前もって感謝します。

JDK

4

3 に答える 3

4

これが大いに役立つかどうかはわかりませんが、 ajax オプションの従来の追加を試してください

    $.ajax({
        url: "models/process.php",
        type: "POST",
        traditional: true,
        data: formData,
        success: function(data)
        {
            alert(data);
        }
    });

これにより、Ajax がデータをシリアル化する方法が変わります。

于 2014-10-24T16:30:39.850 に答える
3

実際には、if(isset($_POST['submit']))ajax を渡していない process.php をチェックインしています。

$('#form1').serializeArray()送信ボタンのデータは含まれません。

こちらのドキュメントを確認してください: http://api.jquery.com/serializearray/

PHP コード (process.php) を次のように変更する必要があります。

//if(isset($_POST['submit'])){ // this will not be available when using .serializeArray()

    foreach($_POST['sms_id']  as $reg=>$msg_id){
        echo $reg. " / ".$msg_id;
    }
//}
于 2014-10-19T16:42:02.223 に答える
1

フォームを送信するには、フォームに入力値が必要なため、送信できるという問題があると思います。

送信しようとしているすべての入力を隠しフィールドに作成し、form.serialize() を使用してみてください。これで十分です。

例:

<tr <?php echo (($x%2) != 0) ? '' : ' class="alternate-row row"' ?>>
<td scope="col"><input type="hidden" value="Somevalue" name"attributeName"/>
<?php echo     $learners['reg_no'];?></td>
</tr>
<?php $x++;}while($learners = $getLearners->fetch());

そしてあなたのajax呼び出し:

var formData = $("#form1").serialize();
        $.ajax({
            url: "models/process.php",
            type: "POST",
            data: formData,
            success: function(data)
            {
                alert(data);
            }
        });
于 2014-10-24T16:03:43.703 に答える