2016-11-24 220 views
0

我有这样的形式和Ajax调用我index.php-提交Ajax表单,而不刷新页面PHP

<form method='post' id='saleForm' > 
    <input type='text' name='addCustomer' class='addInput' id='adlastname' placeholder='customer last name'> 
    <input type='text' name='addYear' class='addInput' id='adYear' placeholder='year'> 
    <input type='text' name='addMake' class='addInput' id='adMake' placeholder='make'> 
    <input type='text' name='addModel' class='addInput' id='adModel' placeholder='model'> 
    <input type='text' name='addGross' class='addInput' id='adGross' placeholder='front gross'> 
    <input type='hidden' name='Id' value='<?php echo $id;?>'> 
    <input type='submit' name='subSale' id='subSale' value='Save' > 
</form> 

<script> 
    $("form").submit(function(e) { 
    var url = "add.php"; // the script where you handle the form input. 

$.ajax({ 
     type: "POST", 
     url: url, 
     data: $("form").serialize(), // serializes the form's elements. 
     success: function(data) 
     { 
      alert(data); // show response from the php script. 
     } 
    }); 

e.preventDefault(); // avoid to execute the actual submit of the form. 
}); 
</script> 

我试图用add.php将其提交到数据库 -

$cust = $_POST['addCustomer']; 
$addMake = $_POST['addMake']; 
$addModel = $_POST['addModel']; 
$addYear = $_POST['addYear']; 
$addGross = $_POST['addGross']; 
$subSale = $_POST['subSale']; 
$soldDate = date('m/d/yy'); 

if(isset($subSale)){ 
    $sql = "INSERT INTO `$sold_table` (`Id`,`Customer`, `Year`, `Make`, `Model`, `FrontGross`, `SoldDate`) VALUES (NULL,'$cust', '$addYear', '$addMake', '$addModel', '$addGross', '$soldDate')"; 
    if (mysqli_query($conn, $sql)) { 
     echo 'success!'; 
    } else { 
     echo "Error: " . $sql . "<br>" . mysqli_error($conn); 
    } 
} 

当我点击保存按钮时,它显示空的警报,并且数据不会因为某种原因而被推送。任何想法我在哪里出错?我知道插入是正确的,因为它工作时,我不使用ajax调用,只使用表单动作..

+0

那么,你期望输出是什么? 你对成功没有任何回应。那么,数据是否到达数据库? – Digitalis

+0

是的只是试图获取数据到数据库 –

+0

这至少解释了空警报 – Digitalis

回答

1

当使用jQuery提交表单时,不使用提交按钮。因此,一旦PHP收到发布的数据,它就会变成空的。 您的脚本正在检查$ subSale以执行查询,该查询现在失败。

尝试提供一个名为SubSale的隐藏输入,它将再次工作。另一个解决方案是根据您自己的建议删除整个if语句。

if(isset($subSale)){ 
+0

完美是啊我刚刚删除它谢谢你! –

+0

不客气。快乐的编码! – Digitalis