2012-04-22 76 views
1

$ .ajax有两个回报:成功和错误。
如果$ .ajax调用一个php模块,如何分配响应成功并返回错误?
例如:
如果这行代码返回一个错误:ajax + php另一个正确的错误处理建议

$connection = mysql_connect($server,$user,$password); 

我想收到错误在Ajax的错误
如果PHP的模块的执行是正确的,那么我想在ajax-sucess中收到一条消息
如果我从PHP发送echo“message”消息,我总是收到ajax-success消息,我必须测试什么是成功,什么不成功!

+0

失败时,请勿回显....使用trigger_error。 – itachi 2012-04-22 13:17:13

+0

你的意思是,用echo,回调会成功,用trigger_error,回调会出错吗? – Bertaud 2012-04-22 21:08:58

+0

给你一个低于 – itachi 2012-04-23 06:06:57

回答

2

jQuery ajax documentation

error(jqXHR, textStatus, errorThrown)
A function to be called if the request fails. ...

在服务器端请求已成功。通常情况下,回调将成为成功处理程序,而不是错误处理程序。

您应该处理ajax-success处理程序中的mysql_connect错误。

+0

的工作答案,你可以触发一个错误,并发送状态作为错误,这将触发ajax错误功能。例如在yii中,只需在服务器端抛出一个CHttpException,并且ajax错误就会触发。所以“因此,结果回调将永远是成功处理程序,而不是错误回调。”是一种误解。您只需创建一个自定义错误处理程序。 – itachi 2012-04-22 13:27:42

+0

但是如何从PHP发送错误状态! – Bertaud 2012-04-22 13:29:07

+0

看到我上面的评论。 – itachi 2012-04-22 13:32:30

0

我认为Ajax错误回调将返回错误只有在AJAX不能正常工作,而不是如果事情(比如在你的情况下,SQL命令),在你的(成功“ajaxed”)脚本做不行。

但是,要处理您的ajax成功回调函数中的数据的sql错误,您可能可能解析返回的数据。我的意思是你可以在你的脚本输出中创建一个id ='sql_error'的div,然后阅读这个div的内容。如果没有sql错误,那么你的错误div必须有零内容。

这样的事情,也许(未经测试):

$.get(url, function (data) { 
    var sql_error = $("#sql_error", data).html(); 
    // or var content = $("#error", $(data)).html(); 

    // you can then show output in the way you want, depending on sql_error 
}); 
0

试试这个....(测试)。在服务器端的条件中使用此错误。

header('403 Forbidden', true, 403); 
die('forbiden to log in. No authorization'); 

这将引起误差函数。根据您的需要放置状态代码和消息。