2
$.ajax({
    type: "POST",
    url: "functions/add_vendor.php",
    data:
    {
        vendor_info_json : vendor_info_json
    },
    success:function(result)
    {
        alert('Successfully Done.')
        location.reload();
    },
    error: function(jqXHR, textStatus, errorThrown){
        alert('Error Message: '+ textStatus);
        alert('HTTP Error: '+ errorThrown);
    }
})

これは私が取り組んでいるjqueryコードです。以下は、呼び出される add_vendor.php ファイルです。

<?php
include_once('../models/VENDOR_DB_MANAGER.php');

$vendor_info_json = $_REQUEST["vendor_info_json"];
$DB = new VENDOR_DB_MANAGER();
$DB->connectTo('BBY');
try
{
            //This ALWAYS returns false to test the code.
    if($DB->insertDataToTable('mfVendor', $vendor_info_json))
    {
        $DB->disconnect();

        header('Content-Type: application/json');
        $data = json_encode($result);
        echo $data;
    }
    else
    {
        throw new Exception("Error has been detected.");

    }
}
catch (Exception $e)
{
    header("HTTP/1.1 500 Internal Server Error");
            echo "Exception occurred: " . $e->getMessage();
}
?>

OK、'if($DB->insertDataToTable('mfVendor', $vendor_info_json))' の部分は、$.ajax のエラー処理コードをテストするために常に false です。私が何をしても、phpコードが常に例外をスローしても、エラー:コールバックは機能しません。

ここで見逃している問題は何ですか? :(

4

1 に答える 1

1

サーバーが内部サーバー エラーをスローしても、Javascript 側からは成功です。success関数では、応答のステータス コードを確認し、それに応じて処理する必要があります。

于 2013-05-09T22:30:18.637 に答える