0

私はこの問題に夢中になっています。ajax を使用してフォームからデータを送信しようとしましたが、すべての Web ページをリロードする必要はありません (私の Web ページには、トラフィックを生成するインデックス メニューを生成するためのクエリがいくつか含まれています)。フォーム データを処理し、それを php ページに渡して処理する sendForm メソッドを作成します。これはjsコードです:

function sendForm(){
    var http = false;
    http = new XMLHttpRequest();
    var ser = $(":input").serialize();
    http.open("POST", "http://localhost/redir.php" ,true);
    http.onreadystatechange= handleResponse();
    http.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
    http.setRequestHeader("Content-length", ser.length);
    http.setRequestHeader("Connection", "close");   
    http.send(ser);
    return true;        
}

forサイクル内にいくつかのphpコードがあるため、私のフォームデータには可変数の入力が含まれています。

<form name="form" id="form" class="table table-hover"  method="post"> 


<?php while(.....))  { ?>
<tr style="line-height:40px">
<td><?php echo $home;?></td>

<td><?php echo $vis;?></td>                             
<td><input type="text" name="goal_h[]" class="input-mini" 
    <?php if ($sq[16] == "2"){ ?>  
    readonly value="<?php echo $goal_h;?>" 
    <?php }else if ($sq[16] == "3"){
    ?>  readonly value="-" 
    <?php }  else echo "value=\"-\""; 
    ?>  id="goal_h<?php echo $i?>[]" maxlength="2" size="2" />  
    <input type="hidden" name="id_sub" value="<?php echo $id_sub;?>" />
    <input type="hidden" name="id" id="id" value="<?php echo $id_d;?>" />
    <input type="hidden" name="data_gg" value="<?php echo $data_gg;?>" />
    <input type="hidden" name="n_gg" value="<?php echo $n_gg;?>" />
    <input type="hidden" name="id_p_home[]" id="idphome<?php echo $i?>" value="<?php echo $tmp_id_p;?>" /> 
    <input type="hidden" name="id_p_vis[]"  id="idpvis<?php echo $i?>" value="<?php echo $sq[10];?>" />
</td>
<td>
    <input type="text" name="goal_v[]" class="input-mini" <?php if ($sq[16] == "2"){ ?>  readonly value="<?php echo $goal_v;?>" <?php }else if ($sq[16] == "3"){ ?>  readonly value="-" <?php }  else echo "value=\"-\""; ?> id="goal_v<?php echo $i?>[]" maxlength="2" </td>   
<td><input type="checkbox" <?php if ($sq[16] == "2"){ ?> checked <?php } ?> id="sosp<?PHP echo $i?>" name="sosp[]" value="<?PHP echo $i?>"  onclick="cambiaStato(<?php echo $i?>);"/></td>
<td><input type="checkbox" <?php if ($sq[16] == "3"){ ?> checked <?php } ?> id="nd<?PHP echo $i?>" name="nd[]" value="<?PHP echo $i?>" onclick="cambiaStato(<?php echo $i?>);"/>
</td>
</tr>   
<tr style="line-height:40px">
<td><input type="submit" id="submit" name="submit" value="AGGIORNA IL PUNTEGGIO" onclick="sendForm()"   /></td>
<td colspan="5"></td>
</tr>     
    <?php } ?>
</form>

このコードは、ajax を使用せずに単に action=name_of_file.php を使用すると機能しますが、sendForm() メソッドを使用しようとすると、redir.php ファイルで $_POST 変数が失われます。

$home_id_p=$_POST['id_p_home'];
$vis_id_p=$_POST['id_p_vis'];
$goal_home=$_POST['goal_h'];
$goal_vis= $_POST['goal_v'];    
$sosp= (isset($_POST['sosp'])) ? $_POST['sosp'] : "99";
$nd= (isset($_POST['nd'])) ? $_POST['nd'] : "99";

そして、$home_id_p でループする必要があります。

serialize() なしで、また serializeArray() で試しました: var ser = $(":input").serializeArray(); しかし、これでは「引数が無効です」というエラーが発生するため、送信できません

http.send(ser)

何か案が?

ありがとう

4

0 に答える 0