0

我对这个问题感到疯狂。我尝试使用 ajax 以一种无需重新加载所有网页的方式从表单发送数据(我的网页包含一些用于生成产生流量的索引菜单的查询);我创建了 sendForm 方法,它处理表单数据并将其传递给 php 页面进行处理。这是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