AJAX / jQuery / PHP序列化表单

时间:2014-04-26 21:26:15

标签: php jquery ajax

我正在尝试使用AJAX提交表单,但它无效。该函数执行但ajax在控制台中返回内部500错误...

问题似乎出现在我正在调用的PHP文件中。我不确定我是否正确使用序列化数据,因为当我用SQL替换SQL的值时,它执行并且很好 - 因此它可能是空值的问题..

以下问题修改编码:

HTML:

<form method="POST" id="addIndicator" class="smart-form">

<input type="text" name="numerator" placeholder="Numerator">
 <input type="text" name="denominator" placeholder="Denominator">                                               
<input hidden type="text" value="1" name="iid"/>
<input id="indicator_submit" class="btn btn-primary pull-right" type="submit" value="Add Data" style="margin-top:-15px;padding:6px;">


</form>

jQuery的:

 $("#indicator_submit").click(function(e) { 

   $.ajax({
    cache: false,
    type: 'POST',
    url: 'addIndicatorData.php',
    data: $("#addIndicator").serialize(),
    success: function() {  

     alert('success');  

   }
    });

alert("function working");
 e.preventDefault();


}); 

PHP:

$iid = $_POST['iid'];
$num = $_POST['numerator']; //numerator val
$den = $_POST['denominator']; //denominator val
$perc = ($num / $den) * 100; //percentage calculated


$abc = $con->prepare("INSERT INTO indicator_data VALUES (:iid,'',:num,:den,:perc,NOW())");
$abc->bindParam(':iid', $iid);
$abc->bindParam(':num', $num);
$abc->bindParam(':den', $den);
$abc->bindParam(':perc', $perc);
$abc->execute(); 

1 个答案:

答案 0 :(得分:0)

jQuery serialise方法返回表单的标准URL编码字符串表示形式。在PHP中,您需要parse the string进入PHP数组,例如

<?php
parse_str($_POST['indicator'], $input);

注意,您需要为对象命名:

$.ajax({
    cache: false,
    type: 'POST',
    url: 'addIndicatorData.php',
    data: {
        indicator: $("#addIndicator").serialize()
    }
});