完整的 AJAX 反馈
Posted
技术标签:
【中文标题】完整的 AJAX 反馈【英文标题】:Complete AJAX feedback 【发布时间】:2010-09-27 07:21:59 【问题描述】:我使用数据库记录管理构建 JQuery/JS/php/mysql 应用程序,需要向用户提供关于 AJAX 调用的可靠和完整的反馈,修改后端数据库记录。恕我直言,问题是 $.ajax
success:
和 error:
函数仅表明 AJAX 传输层成功,而不是整个过程。如果数据库修改失败怎么办?如何向用户提供完整的反馈?
我最终得到了
$.ajax( 网址:“/动作/删除”, 数据:“rowid="+rowid, 完成:函数(xmlHttp) if ( xmlHttp.responseText ) alert('成功 - 后端返回“成功”'); else alert('失败 - 后端返回 NULL') );和 PHP 响应:
$success = deleteRecord( $_GET(rowid) ); 如果($成功) 打印“成功”; 别的 打印空; 出口();这个想法很简单 - 如果我设法从后端获得积极的反馈,那么整个操作就成功了,如果没有 - 用户不在乎问题发生在哪里。
提前感谢您,非常感谢您的反馈。
【问题讨论】:
【参考方案1】:如果您使用一些 json 数据来响应请求,而不仅仅是一些要插入 DOM 的新 html,您可以在数据中放置您喜欢的任何类型的错误代码和消息。例如,如果您的回复类似于...
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
【讨论】:
你不应该用大括号而不是方括号吗? 哎呀,是的,但你明白了。 谢谢,Rikh - 它看起来是一个很好的解决方案。然而有趣的是为什么 AJAX 不提供反馈功能。【参考方案2】:一种可能的解决方案是使用 HTTP 响应代码来表示失败,例如 200 OK,一切正常,以及 500 Internal Server Error on error,您可以在达到状态 4 时简单地检查一下。
在 PHP 中,我相信这是在发送任何其他数据之前通过 header("HTTP/1.0 200 Ok") 完成的。如果您担心在评估正确的标头设置之前会错误发送数据,您可以打开输出缓冲。
您希望如何呈现数据当然取决于您,例如,您可以在 500 上使用 document.getElementById("myerrorbox").innerHTML = xmlHttp.responseText 或类似的,并呈现部分 html 文档在你的 php 程序中。
【讨论】:
【参考方案3】:我将状态消息发送回客户端。连同错误标志。然后我的 JavaScript 代码显示它从服务器获得的消息,并根据错误标志为消息着色。 我觉得这样很有效。
【讨论】:
以上是关于完整的 AJAX 反馈的主要内容,如果未能解决你的问题,请参考以下文章