从服务器端捕获错误

Arm*_*man 0 php mysql jquery json mysql-error-1146

我从我的服务器获取json数据,将它们显示为一个表.

$('#queryFrom').ajaxForm({                    
                dataType:  'json',                                        
                beforeSubmit:  showRequest,  // pre-submit callback
                success:   processJson,                    
                error: function (xhr, ajaxOptions, thrownError){
                    $('#queryResult').html('<div class="ui-corner-all ui-state-error"><p><span class="ui-icon ui-icon-alert"></span>'+thrownError+'</p></div>');
                    $('#queryResult').show("slow");
                }
            });
Run Code Online (Sandbox Code Playgroud)

我可以以某种方式将json/ajax erros方面的mysql错误分开吗?目前我得到:无效的JSON:SQLSTATE [42S02]:未找到基表或视图:1146表'simover.simulation'不存在{} 我可以自定义jquery引发的消息吗?谢谢阿曼.

编辑

可以使用xhr.responceTxt而不是thrownError.

Igo*_*yev 5

目前您的错误回调被调用,因为您的服务器响应中有错误,而不是因为您的服务器遇到问题.Javascript引擎抛出一个错误,因为它希望发回JSON数据,而是获得一个纯字符串Base table or view not found...,它不是一个有效的JSON字符串.

我建议您在服务器上捕获这些错误,例如通过使用trycatch阻止并在发生错误时发回某种特殊响应.像这样:

{
    "ok": false, 
    "error_key": "database_error", 
    "error_text": "Base table or view not found: 1146 Table 'simover.simulation' doesn't exist"
}
Run Code Online (Sandbox Code Playgroud)