使用serialize将表单数据发送到php页面:$ _POST不获取数据

时间:2012-10-07 16:03:40

标签: php ajax forms post serialization

我对这个问题感到疯狂。 我尝试使用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。

我也尝试过序列化()和serializeArray():     var ser = $(“:input”)。serializeArray(); 但是有了这个,我无法发送它,因为我在

中收到错误“无效参数”

http.send(SER)

有什么想法吗?

由于

0 个答案:

没有答案