完整的 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 反馈的主要内容,如果未能解决你的问题,请参考以下文章

jQuery - 每 10 秒调用一次 ajax

浅谈js本地图片预览

oranges-给mini os 添加内存管理,进程多级反馈队列,进程内存完整性度量

Ajax:async

XMLHTTPRequest状态status完整列表

小程序反馈表显示不全