2014-09-03 4 views
0

Я студент и использую jquery и php для добавления записей в базу данных. Записи добавляются, но я хочу отобразить сообщение «Запись вставлена» в том случае, если запись была успешно добавлена, и сообщение об ошибке, если возникла ошибка.Как отображать сообщения об ошибках Jquery ajax?

Это мой HTML-код:

<form id="forn-newsletter" class="form-horizontal" method="POST"> 
<div class="form-group"> 
    <label id="name_label" class="control-label col-xs-2">Name</label> 
    <div class="col-xs-10"> 
     <input type="text" class="form-control" id="news_name" name="news_name" placeholder="Name" onblur="checkName();"/><font color="red" id="name_error"></font> 
    </div> 
</div> 

<div class="form-group"> 
    <label id="email_label" class="control-label col-xs-2">Email</label> 
    <div class="col-xs-10"> 
     <input type="text" class="form-control" id="news_email" name="news_email" placeholder="Email" onblur="vali()"/><font color="red" id="email_error"></font> 
    </div> 
</div> 

<div class="form-group"> 
    <div class="col-xs-offset-2 col-xs-10"> 
     <button id="register-newsletter" type="submit" class="btn btn-primary">Register for Newsletter</button> 

    </div> 
</div> 

<div id="dialog"></div> 
</form> 

Это мой учетно-newsletter.php

<?php 
include('connect.php'); 

$name=$_POST['name']; 
$email=$_POST['email']; 
$val=md5($name.$email); 
$query = "INSERT INTO newsletter (Id,Name,Email,Val) VALUES('','$name','$email','$val')"; 


$result=mysql_query($query); 
if(!$result){ 
    echo "Some error Occured..Please try later"; 
} 
else{ 
    echo "Your details have been saved. Thank You "; 
} 

mysql_close($con); 
?> 

Это мой JQuery код

$(document).ready(function(){ 
$("#register-newsletter").click(function(){ 
    var name=$("#news_name").val(); 
    var email=$("#news_email").val(); 

    var dataString="name="+name+"&email="+email; 
    var request; 
     request = $.ajax({ 
     url: "registration-newsletter.php", 
     type: "POST",   
     data: dataString 
     }); 

    //return false; 
}); 

}); 
+0

чтение '$ .ajax()' документацию и разобрать ответ от PHP, то дисплей соответствующие сообщения об ошибках соответственно. – Raptor

+2

sidenote: используйте mysqli_ * или PDO и вместо этого используйте подготовленные инструкции, вместо этого используйте количество вставленных строк, затем отправьте логическое значение в json_encoded return, а затем используйте if if else в блоке успеха. – Ghost

+1

Подготовленные утверждения не являются обязательными. – Raptor

ответ

2

Добавить пролетом в свой HTML код для отображения ошибки.

<span id="error"></span> 

Вы уже эхом отзываете сообщение с страницы PHP на ajax. Вы можете сделать mysql_affected_rows(), чтобы проверить, обновил ли запрос таблицу.

$result=mysql_query($query); 
if(mysql_affected_rows()>0){ // return the number of records that are inserted 
    echo "Your details have been saved. Thank You "; // success 
} 
else{ 
    echo "Some error Occured..Please try later"; // failure 
} 
exit; 

Тогда вы можете просто показать вторит сообщение в пролете с идентификатором error как:

request = $.ajax({ 
     url: "registration-newsletter.php", 
     type: "POST",   
     data: dataString, 
     success:function(response)  // response from requested PHP page 
     { 
      $('#error').html(response); // set the message as html of span 
     } 
     }); 
+0

Не следует ли вы выбросить ошибку и предоставить обработчик для ajax 'error', а не форсировать все ответы в диапазоне, отмеченном как ошибка? – ne1410s

+0

Ничего не отображается. –

+0

Вы получаете ответ со страницы. Поставьте предупреждение после функции «success: function (response) {' ​​ – Jenz

0
$.ajax({ 
       url: 'registration-newsletter.php', 
       type: 'post', 
       data: dataString , 
       success: function (msg) { 
        alert(msg); 
       }, 
       error:function(msg) 
       { 
       alert(msg); 
       } 

      }); 
+0

где вы получаете '../ PackAssetMap/GetSubcate'? Полностью не связанный – Raptor

0
jQuery.ajax({ 
    url: "myfile.php", 
    type: "POST",   
    data: dataString, 
    success:function(response)  /* this response is an array which is returning from the myfile.php */ 
    { 
    $status = response['status']; 
    if($status == 'success') 
     { 
     $('#message').html(response['msg']); 
     } 
    else 
     { 
     $('#message').html(response['msg']); 
     } 
    } 
    }); 

Функция, которую вы добавили успех будет обрабатывать «текст, который будет append "или" alert to be show ". Его вполне равным условию if, если ответ пришел успешно, он перейдет в состояние.

0

Это то, что работает для меня подчиненной формы (см эти 2 параметра в .then функции):

<span id="result">Loading...</span> 
<div id="form"> 
    <form> 
     <input id="personId"> <-- put personID here<br> 
     <input id="submit" type="submit" value="Generate"> 
    </form> 
</div> 

<script type="application/javascript"> 
    $(document).ready(function() { 
     var submit = $('#submit'); 
     var res = $('#result'); 
     $('#form').submit(function() { 
      submit.prop('disabled', true); 
      res.text("Sending message..."); 

      $.ajax({ 
       url: '/rest/message', 
       contentType: "application/json;charset=UTF-8", 
       method: "POST", 
       data: JSON.stringify({'personId': $('#personId').val()}) 
      }).then(function(result) { // OK 
       res.text("Message was generated"); 
       submit.prop('disabled', false); 
      }, function(reason) { // ERROR 
       res.css('color', 'red').css('font-weight','Bold'); 
       res.text("An error has occurred: " + reason.responseJSON.message); 
       submit.prop('disabled', false); 
      }); 
      return false; // prevent default action 
     }); 
    }); 
</script> 
Смежные вопросы