2014-10-22 2 views
0

Я работаю над своей первой формой HTML, которая выполняет POST-сообщение AJAX HTTP с использованием jQuery. Когда пользователь вносит изменения в текстовое поле ввода и вкладки из поля, он запускает сценарий AJAX, который, в свою очередь, вызывает скрипт PHP, который выполняет обновление базы данных.Передача результата из вызова AJAX скрипту PHP

Вызов AJAX может быть успешным, но обновление базы данных может быть неудачным (например, ошибка, связанная с базой данных). Я хотел бы вставить результат скрипта PHP в предупреждение. Я могу повторить любые ошибки в моем PHP-скрипте, но я не уверен, как это сделать в соответствующее предупреждение.

Вот мой Javascript:

<script type="text/javascript"> 
    $(document).ready(function() { 
    $("#storeManager").change(function(){ 
     var storeManager = $("#storeManager").val(); 
     $.post('editProject.php', { storeManager: storeManager, id: '1E1DDA14-D2C6-4FC8-BA5F-DBCCC7ABAF7F' }, function(data) { 
      $("#managerRow").addClass("success"); 

     }).fail(function() { 
      // no data available in this context 
      $("#managerRow").addClass("danger"); 
      $("#ajaxAlert").addClass("alert alert-danger"); 
     }); 
    }); 
}); 
</script> 

Вот HTML таблица, которая содержит поле ввода, которое инициирует вызов AJAX:

<table class="table table-striped table-bordered table-hover"> 
    <tbody> 
    <tr> 
    <td>Store</td> 
    <td>Acme Widgets Inc</td> 
    </tr> 
    <tr> 
    <td>Retailer</td> 
    <td>Acme Corp</td> 
    </tr> 
    <tr> 
    <td>Store ID</td> 
    <td>9876543</td> 
    </tr> 
    <tr> 
    <td>State</td> 
    <td>NSW</td> 
    </tr> 
    <tr class="" id="managerRow"> 
    <td>Manager</td> 
    <td> 

    <input type="text" class="form-control" id="storeManager" name="storeManager" value="Peter Johns"> 

    </td> 
    </tr> 
    <tr> 
    <td>Phone</td> 
    <td>9222 3456</td> 
    </tr> 
    </tbody> 
    </table> 

    <div class="" id="ajaxAlert" role="alert"></div> 

То, что я хотел бы сделать это, если есть какая-либо ошибка из скрипта editProject.php, который он хранит в переменной $ error, и может вывести его, а затем вставить в ajaxAlert и добавить класс: alert:

<div class="alert alert-danger" id="ajaxAlert" role="alert">The error from the database update from the php script appears here</div> 

Я новичок в jQuery и AJAX, и все, что я пробовал, не обновил предупреждение новым классом и текстовым сообщением, и я не могу найти похожего на пример, демонстрирующий это.

ответ

0

Вы можете использовать append() в jquery. Попробуйте использовать

fail(function() { 
     // no data available in this context 
     $("#managerRow").addClass("danger"); 
     //append error to the div using its ID 
     $('#ajaxAlert').append('error from database'); 
    }); 
0

Попробуйте следующее: вместо .fail();

var storeManager = $("#storeManager").val(); 
    $.post('editProject.php', { storeManager: storeManager, id: '1E1DDA14-D2C6-4FC8-BA5F-DBCCC7ABAF7F' }, function(data) { 
     alert(data); 

    },function (xhr, data, jx) { 
     // the error function should be mentioned like this with comma after success fucntion 
     console.log(xhr);//for console logging the error... 
     alert(xhr);//NOW you will get data and alert will show... 
    }); 
0

index.php

----php start---------  
if(isset($_POST['name'])){ 
    $dbc = mysqli_connect('','','',''); 
    $sql = "UPDATE accounts set name='".$_POST['name']." WHERE email='".$_POST['mail']."' LIMIT 1"; 
    if(mysqli_query($dbc, $sql) === true)){ 
     echo 'success'; exit(); 
    }else{ 
     echo 'connection error'; exit(); 
    } 
} 
----php end --------- 
<script> 
    function test(){ 
     var formDATA = { 
      'name': $('#input_name').val(), 
      'mail': $('#input_mail').val() 
     }; 
     $.ajax({ 
      type: 'POST', 
      url: 'index.php', 
      data: formDATA, 
      success: function(response){ 
       if(response == 'success'){ 
        $('#result').html('Your Update Was Complete'); 
       }else{ 
        $('#result').html(); 
       } 
      } 
     }); 
    } 
</script> 
<input id="input_mail" type="text" value=""> 
<input id="input_name" type="text" value=""> 
<button onclick="test();">Test Ajax</button> 
<div id="result"></div> 

Попробуйте что-нибудь простое, это очень базовая версия AJAX и PHP все на одной странице. Поскольку кнопка запускает функцию, вам даже не нужна форма (не означает, что вы не должны ее использовать). Но я оставил его простым, чтобы вы могли следить за всем.

Извините, когда я добавил открытые и закрывающие теги php, он не отображался как код. Также не забудьте включить ваши ресурсы jquery.

ПРЕДУПРЕЖДЕНИЕ: НЕ ДЕЛАЙТЕ ЗАПРОС, КАК ПРИМЕР, ЭТО ОЖИДАЕТСЯ ОПАСНОСТЬ ОГРОМНОЙ БЕЗОПАСНОСТИ!