2015-11-17 4 views
0

Вот моя форма, из которой я хочу обновить значения. Когда я пытаюсь сделать это с помощью простого php + html, он отлично работает !! Но когда я пытаюсь опубликовать значения через вызов ajax, это не работает. Все предложения, пожалуйста.Код AJAX, не обновляющий таблицу

HTML

<form class="form-block" role="form" action="" method="post"> 
<div class="form-group"> 
<?php 
$email=$_SESSION["login_email"]; 
$query=mysqli_query($con,"select * from customers where email='$email'"); 
while($row=mysqli_fetch_array($query,MYSQLI_ASSOC)) 
{ 
?> 
<label for="name">Full Name</label> 
<input type="text" name="name" class="form-control" id="name" value="<?= $row["name"]; ?>" placeholder="Full Name"> 
<label for="comment">Address</label> 
<textarea class="form-control" name="address" id="address" rows="5" id="comment" ></textarea> 
<label for="telephone">Telephone</label> 
<input type="tel" class="form-control" name="phone" id="phone" placeholder="Enter Mobile Number" value="" > 
    <label for="city">City</label> 
<input type="text" class="form-control" name="city" id="city" placeholder="Enter City" value="<?= $row["city"]; ?>" > 
    </div> 
<?php 
}?> 
<input type="submit" class="btn btn-default" name="add" id="add" value="Update"/> 


<span class='msg'></span> 
    <div id="error"></div> 
    </form> 

AJAX

$(document).ready(function() { 
$('#add').click(function() 
     { 
      $.ajax({ 
       url: "address_update.php", 
       type: "POST", 
       async: true, 
       data: { Name:$("#name").val(),Address:$("#address").val(), Phone:$("#phone").val(), City:$("#city").val()}, //your form data to post goes here as a json object 
       dataType: "html", 

       success: function(data) { 
        if(data) 
        { 
         //$('#output').html(data); 
         $("body").load("index.php?page=form");//.hide();//.fadeIn(1500).delay(6000); 
        } 
        else 
        { 
         $("#error").html("<span style='color:#cc0000'>Error:</span> Invalid username and password. "); 
        }}}); 
     });}); 

PHP

<?php 
include ("db/db.php"); 
session_start(); 

$name=$_POST['Name']; 
    $address=$_POST['Address']; 
    $phone=$_POST['Phone']; 
    $city=$_POST['City']; 
$email=$_SESSION['login_email']; 

$sql=mysqli_query($con,"Update customers set name='$name',address='$address',phone='$phone',city='$city' where email='$email'"); 
    if($sql) 
    { 
echo "updated"; 
    } 
+0

@Saty это не делает никакой разницы. Проблема заключается в вызове AJAX – tabia

+0

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

+2

также использовать' $ _POST ['Name'] 'вместо' $ _POST ['name'] 'и soo onn ... – Saty

ответ

3

Этот селектор:

$('#add') 

ничего не находит. Потому что в вашей разметке нет HTML-элемента с id="add".

Вы do имеют элемент с name="add". Так что либо добавить id к этому элементу:

<input id="add" type="submit" class="btn btn-default" name="add" value="Update"/> 

или изменить селектор для нацеливания существующий элемент:

$('input[name="add"]') 

Примечание: То же самое относится и к $('#address') и $('#phone'). В вашей разметке таких элементов нет. Взгляните на the jQuery documentation for selectors.

+0

Исправлено! Но все равно не имеет никакого значения. Посмотрите на обновленный вопрос – tabia

+0

@tabia: Как конкретно это происходит? Когда вы отлаживаете это, что происходит? Добавлен ли обработчик события в элемент? Вызывается ли обработчик при нажатии на элемент? Выполняется ли запрос AJAX? Каков ответ сервера? Есть ли ошибки в консоли JavaScript? Мы не можем видеть, что происходит в вашем браузере, но вы можете. – David

0

Удалить указанный под

if(isset($_SESSION["login_email"])) 
0

Дополнительно цикл IF, вы урожденный изменить тип кнопки от представить кнопку

<input type="submit" class="btn btn-default" name="add" value="Update"/> 

Над посылов форма, что бы вы ни добавить событие щелчка является сделано в parralel.

<input type="button" class="btn btn-default" name="add" value="Update"/> 

только выполняет свой JavaScript, при использовании:

$('input [name="add"]').click(function(){ 
    // your improved ajax call here 
} 
0

Попробуйте это:

$.ajax({ 
    . 
    . 
    data: { 
    'Name': $name, 
    'address': $address, 
    . 
    . 
} 
}); 
+4

Просьба указать пояснения к вашему коду. – Novocaine

Смежные вопросы