2013-06-19 7 views
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 код нижеJquery Ajax WOKING только один раз

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> 

Теперь проблема заключается в том, что всякий раз, когда я открываю страницу вставить одну запись и ее получение успешно сохранен на моем DB. Но когда я добавляю еще одну запись, она не сохраняется. Мне нужно перезагрузить страницу на каждой вставке ...

В чем проблема? Также должна выполняться функция php viewRecord();, но ее нет ...

+0

Где находится HTML/Ваша форма? – Precastic

+0

Как называется postData? –

+0

проверьте, пожалуйста, теперь. Я добавил html –

ответ

0

Использование .serialize() для получения данных из формы.

Также ваша форма отправляет данные два раза - на onclick и onsubmit. Пожалуйста, запретите событие onsubmit, добавив return false;

+0

Я не знаю, как использовать serialize(), поскольку это самая первая работа jquery, я дон ... Я должен удалить if (isset ($ _ POST ['submit'])? –

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> 
+0

Это первичный ключ –

+0

, затем используйте запрос, который я написал в своем ответе. он будет работать нормально. отметьте его – skparwal

+0

, если вы определяете первичный ключ, тогда он не должен сохранять в нем нулевое значение. (если вы определяете уникальный ключ, он будет принимать значение null только один раз). – skparwal

0

Проблема, о которой упоминается @skparwal, заключается в том, что вы пытаетесь вставить '' в свой первичный ключ. Вам нужно использовать mysql_error() после вашей вставки, чтобы узнать, какие ошибки возникают. Посмотрите на эту ссылку о том, как это сделать: http://php.net/manual/en/function.mysql-error.php

Кроме того, ваш ajax не будет работать должным образом, потому что вы не возвращаете false для onClick(), что означает, что форма отправляется каждый раз после 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> 
+0

не могли бы вы рассказать мне как вернуть false? –

+0

@RameezShah Посмотрите на мое редактирование и попробуйте, что – Precastic

+0

Yeahhhhhhh: D Workinggg fine ... даже функция viewRecord(); работает ... что я делал неправильно: S мой учитель тауг меня, что way: S –