完整的AJAX反馈

时间:2008-12-17 09:20:32

标签: php jquery ajax

我使用DB记录管理构建JQuery / JS / PHP / mySQL应用程序,需要提供可靠的& amp;在AJAX调用上完成对用户的反馈,修改后端DB记录。问题恕我直言$.ajax success:error:函数只表明AJAX传输层成功,而不是整个过程。如果DB修改失败怎么办?如何向用户提供完整的反馈?

我最终得到了

$.ajax({
   url: "/action/delete",
   data: "rowid="+rowid,
   complete: function(xmlHttp) {
   if ( xmlHttp.responseText ) alert('Success - back end returned "success"');
      else alert('failure - back end returned NULL')
   }
});  

和PHP响应:

$success = deleteRecord( $_GET(rowid) );

if($success) { 
   print 'success';
} else {
   print NULL; 
}
exit();

这个想法很简单 - 如果我设法从后端获得积极的反馈,那么整个操作就成功了,如果没有 - 用户不关心问题发生在哪里。

提前感谢您,我们非常感谢您的反馈。

3 个答案:

答案 0 :(得分:3)

如果您使用一些json数据而不是仅仅是一些新的html来响应请求以插入DOM,您可以将任何类型的错误代码和消息与数据放在一起。例如,如果您的回答类似于......

{ 
    errorstate: 0,
    errormsg: "All systems are go",
    displaytext: "stuff I want to display when all goes well"
}

您的javascript代码可以检查此数据并执行所需的任何操作。它还允许您将更多的错误处理推送到服务器脚本中,这通常可以更简单。

尝试http://docs.jquery.com/Ajax/jQuery.getJSON#urldatacallback

答案 1 :(得分:2)

一种可能的解决方案是使用HTTP响应代码来发出故障信号,例如200 OK,一切正常,以及出现错误时出现500内部服务器错误,您可以在达到状态4时查看。

在PHP中,我相信这是在发送任何其他数据之前通过标题(“HTTP / 1.0 200 Ok”)完成的。如果您害怕在评估正确的标题设置之前错误地发送数据,则可以打开输出缓冲。

你希望如何呈现数据当然取决于你,例如你可以在500上只有document.getElementById(“myerrorbox”)。innerHTML = xmlHttp.responseText,或类似的,并渲染部分html文档在你的php程序中。

答案 2 :(得分:0)

我将状态消息发送回客户端。随着错误标志。然后我的JavaScript代码显示它从服务器获得的消息,并根据错误标志为消息着色。 我觉得这很有效率。