javascript - PHP 的 AJAX 输出错误代码

标签 javascript php jquery ajax

经过一番努力和在线阅读后,我仍然找不到这个问题的答案。在我的应用程序中,表单通过 AJAX 发送,然后在 PHP 中进行验证并添加到数据库中。但是,我可以发送成功消息,但我不知道如何向用户发送友好的错误消息。

下面是我的JS:

$(document).ready(function(){
  var form = $('form');
  var submit = $('#submit');
  form.on('submit', function(e) {
      e.preventDefault();
      $.ajax({
          url: 'ajax_comment.php',
          type: 'POST',
          cache: false,
          data: form.serialize(),
          beforeSend: function(){
              submit.val('Posting...').attr('disabled', 'disabled');
          },
          success: function(data){
              var item = $(data).hide().fadeIn(800);
              $('.new-comment').append(item);

              form.trigger('reset');
              submit.val('Submit Comment').removeAttr('disabled');
          },
          error: function(e){
              alert(e);
          }
      });
  });
});

我对 AJAX 的经验很少,所以请简单地告诉我!错误消息将类似于“用户名不存在”等,因此我认为我无法通过客户端验证来做到这一点。提前致谢!

<小时/>

编辑: 下面是我正在使用的 PHP 代码。

    <?php
// Include files
include 'config.php';

// Variables
$order_id = $_POST['order_id'];  
$comment  = $_POST['comment']; 
$reviewed = 1;
$date     = date('dS F Y');

// Find order ID match 
$stmt = $con->prepare("SELECT order_id FROM transactions WHERE order_id = ?");
$stmt->bind_param('i', $order_id);
$stmt->execute();
$stmt->store_result();
$no_id_match = $stmt->num_rows; 
$stmt->close(); 

// Check if review has already been submitted 
$stmt = $con->prepare("SELECT order_id FROM transactions WHERE order_id = ? AND review = 1");
$stmt->bind_param('i', $order_id);
$stmt->execute();
$stmt->store_result();
$num_rows_reviewed = $stmt->num_rows; 
$stmt->close(); 

if(empty($order_id) === true || empty($comment) === true) {
    exit();
} else if($num_rows_reviewed> 0) {
    exit();
} elseif($no_id_match == 0) {
    exit();
} elseif(strlen($comment) > 499) {
    exit();
} else {
    //Insert review into DB
    $stmt = $con->prepare("INSERT INTO reviews (order_id, comment, date) VALUES (?, ?, ?)");
    $stmt->bind_param('iss', $order_id, $comment, $date);
    $stmt->execute(); 
    $stmt->close();

    // Update transactions to show review added
    $stmt = $con->prepare("UPDATE transactions SET review = ? WHERE order_id = ?");
    $stmt->bind_param('ii', $reviewed, $order_id);
    $stmt->execute(); 
    $stmt->close();

    // Get name from order ID
    $stmt = $con->prepare("SELECT first_name, last_name FROM transactions WHERE order_id = ?");
    $stmt->bind_param('i', $order_id);
    $stmt->execute(); 
    $stmt->bind_result($first_name, $last_name);
    $stmt->fetch();
    $stmt->close();
    $name = $first_name. ' '. mb_substr($last_name, 0, 1);

    // Output review live to page ?>
    <div class="comment-item">
      <div class="comment-post">
        <h3><?php echo $name; ?>: <span><?php echo $date; ?></span></h3>
        <p><?php echo $comment; ?></p>
      </div>
    </div><?php 
}?>

目前,exit() 变量是我想要验证脚本的地方。但是,由于我现在不知道如何执行此操作,因此我只是退出脚本。

最佳答案

您可以通过HTTP方式从后端发送错误。

如果一切正常,请发送一个以 json 编码的 PHP 数组。

$result = [];
$result['error'] = false;
$result['code'] = "OK"; //better with constant
$result['msg'] = "";
echo json_encode($result);

如果有些东西不起作用,就像这样。

header('HTTP/1.1 500 Internal Server Error');
$result = [];
$result['error'] = false;
$result['code'] = "DB_UPDATE_ERROR"; //better with constant
$result['msg'] = "Impossible save bla, bla, bla";
echo json_encode($result);

关于javascript - PHP 的 AJAX 输出错误代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22441929/

相关文章:

javascript - 是什么导致youtube旧评论部分

javascript - 在 Web 应用程序中实现灰盒

php - 匹配字符串中空格后的位数

javascript - 在 Node 中模拟一个使用链式函数调用的 Node 模块

php - Web 应用程序 HTML 参数传递

javascript - Google Places 自动完成 Vue.js

php - 使用 php 的谷歌云语音 API

Javascript 复选框函数 : "missing : after property id"

javascript - 动态创建的元素上的事件绑定(bind)?

javascript - MVC 定时器 Action