0
function postData() {
    var fName=$("#fName").val();
    var lName=$("#lName").val();
    var city=$("#city").val();
    var data="fName="+fName+"&lName="+lName+"&city="+city+"&submit=submit";
    $.ajax({
        type:'POST',
        url:'employeeajaxcodebehind.php',
        data:data,
        success:function(data){
        $("#results").html(data);
        }
    });
}

php代码如下

if(isset($_POST['submit'])) {
    $fName=$_POST['fName'];
    $lName=$_POST['lName'];
    $city=$_POST['city'];
    $Query="INSERT INTO employee(emp_id,firstname,lastname,city) VALUES ('','$fName','$lName','$city')";
    $Result=mysql_query($Query);
    viewRecord();
}

html:

<form method="POST">
    Firstname: <input type="text" id="fName" name="fName"><br>
    Lastname: <input type="text" id="lName" name="lName"><br>
    City: <input type="text" id="city" name="city"><br>
    <input type="submit" id="submit" name="submit" onclick="postData();">
</form>

现在的问题是,每当我打开页面时,我都会插入一条记录,并且它会成功保存在我的数据库中。但是当我添加另一条记录时,它没有被保存......我必须在每次插入时重新加载页面......

这里有什么问题?viewRecord();也应该执行php函数,但它不是......

4

3 回答 3

0

这是因为您将 emp_id 添加为空白(如果它不是主键或唯一键)。您需要在 sql 中省略它:

$sql = "INSERT INTO employee(firstname,lastname,city) VALUES ('$fName','$lName','$city')";

JS 更改:当您使用提交按钮时。您需要防止页面不刷新。所以像这样改变你的ajax调用:

<script type='text/javascript'>
    /* attach a submit handler to the form */
    $("#commentForm").submit(function(event) {

      /* stop form from submitting normally */
      event.preventDefault();

      /* get some values from elements on the page: */
      var $form = $( this ),
      var url =  "employeeajaxcodebehind.php" // or $form.attr( 'action' );

      /* Send the data using post */
      var posting = $.post( url, { fName: $('#fName').val(), lName: $('#lName').val(), city: $('#city').val() } );

      /* Put the results in a div */
      posting.done(function( data ) {
        $("#results").html(data);
      });
    });
</script>
于 2013-06-19T04:04:18.573 回答
0

使用.serialize()从表单中获取数据。

此外,您的表单会发送两次数据 - 在 onclick 和 onsubmit 时。请通过添加防止 onsubmit 事件return false;

于 2013-06-19T04:05:35.327 回答
0

@skparwal 提到的问题是您试图将 '' 插入主键。您需要mysql_error()在插入后使用以查看发生了什么错误。看看这个链接如何做到这一点:http: //php.net/manual/en/function.mysql-error.php

此外,您的 ajax 不会按预期工作,因为您没有为 onClick() 返回 false,这意味着每次触发 ajax 调用后都会提交表单。

此外,您应该迁移到 mysqli 或 PDO,因为不推荐使用 mysql。

编辑

试试这个,但它并不意味着工作或最终实现,它只是为了让你走上正确的道路。它未经测试,因此可能存在一些错误:

将您的 javascript 更改为:

$(function(){
    $('#submit').click(postData);
});

function postData() {
    var fName=$("#fName").val();
    var lName=$("#lName").val();
    var city=$("#city").val();
    var data="fName="+fName+"&lName="+lName+"&city="+city+"&submit=submit";
    $.ajax({
        type:'POST',
        url:'employeeajaxcodebehind.php',
        data:data,
        success:function(data){
            $("#results").html(data);
        }
    });
    return false;
}

将您的 PHP 更改为:

if(isset($_POST['submit'])) {
    $fName=$_POST['fName'];
    $lName=$_POST['lName'];
    $city=$_POST['city'];
    $Query="INSERT INTO employee(firstname,lastname,city) VALUES ('$fName','$lName','$city')";
    if( !( $Result=mysql_query($Query) ) )
        exit( '@todo need to check for error here' );
    viewRecord();
}

将您的 HTML 更改为:

<form method="POST">
    Firstname: <input type="text" id="fName" name="fName"><br>
    Lastname: <input type="text" id="lName" name="lName"><br>
    City: <input type="text" id="city" name="city"><br>
    <input type="submit" id="submit" name="submit">
</form>
于 2013-06-19T04:16:48.843 回答