如何检查是否php已成功运行数据库查询使用jQuery


How to check if php has successfully run db queries using jQuery?

这里,我有这段jQuery代码,它将值传递给处理数据库查询的php文件。

$("#item-input-form__complete-form-btn").click(function(){
var invoiceInfo = {
    "date"           : $("[name=datepicker]").val(),
    "op_id"          : 11111,
    "invoice_number" : $("[name=invoice]").val(),
    "vendor_id"      : 33333
};
var jsonResult = $('#added-items__table').tableToJSON();
$.ajax({
    type: "POST",
    url: "insert_items_to_db.php",
    data: {QUERY_TYPE:"INSERT",
           INVOICE_INFO:invoiceInfo,
           JSON_RESULT:jsonResult},
    success: function(){alert("SUCCEEDED");},
    error: function(xhr, textStatus, error){
         var err = eval("(" + xhr.responseText + ")");
        alert(err.Message);
      }
});
});

这里我有一个php文件,处理传入的参数和运行查询。

insert_items_to_db.php::

<?php
include_once('models/dbapi.php');
$query_type = $_REQUEST["QUERY_TYPE"];
$invoice_info = $_REQUEST["INVOICE_INFO"];
$product_json = $_REQUEST["JSON_RESULT"];
$DB = new DBAPI();
$DB->connectTo('BBY');
$DB->insertDataIntoStockMasterTable($invoice_info, $product_json);
$DB->insertDataIntoStockDetailTable($invoice_info, $product_json);
$DB->disconnect();
?>

DBAPI类中运行查询的方法看起来是这样的:

dbapi.php::

    function insertDataIntoStockMasterTable($invoice_info, $product_json)
    {
        $invoice_date   = $invoice_info['date'];
        $invoice_number = $invoice_info['invoice_number'];
        $op_id          = $invoice_info['op_id'];
        $vendor_id      = $invoice_info['vendor_id'];
        $today_date     = date("Y-m-d");
        $invoice_date = date("Y-m-d", strtotime($invoice_date)); 
        $total_amt = 0;
        for($i = 0; $i < count($product_json); $i++)
        {
            $total_amt += $product_json[$i]['Extended Price'];
        }
        $query ="INSERT INTO stock_master (sm_date, sm_invoice_no, sm_vendor_cd, total_amt, op_id, op_date)
                        VALUES('$invoice_date', $invoice_number, $vendor_id, $total_amt, $op_id, '$today_date')";
        $result = mssql_query($query, $this->selected_hannam_db_server);
        return $result;
    }

问题是……我不知道如何检查查询是否崩溃了。在这种情况下,jquery应该弹出一个消息框,告诉用户向数据库插入数据失败。

如何将错误消息从php传递到jquery?

像这样的东西可以为您工作。

PHP代码

if( $DB->insertDataIntoStockDetailTable($invoice_info, $product_json) ) {
    $result['result'] = true;  
    $result['error'] = '';
} else {
    $result['result'] = false;  
    $result['error'] = 'Insert failed.';
}
header('Content-Type: application/json');
$data = json_encode($result);
echo $data;

Java Script Code

$.ajax({
    type: "POST",
    url: "insert_items_to_db.php",
    data: {QUERY_TYPE:"INSERT",
           INVOICE_INFO:invoiceInfo,
           JSON_RESULT:jsonResult},
    success: successResponseHandler,
    error: function(xhr, textStatus, error){
         var err = eval("(" + xhr.responseText + ")");
        alert(err.Message);
      }
});

function successResponseHandler(data, textStatus, jqXHR) {
    if( data['result'] == true){
        // DO Something here
    } else {
       // Display the error message with text from data['error']
    }
}