我使用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();
这个想法很简单 - 如果我设法从后端获得积极的反馈,那么整个操作就成功了,如果没有 - 用户不关心问题发生在哪里。
提前感谢您,我们非常感谢您的反馈。
答案 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代码显示它从服务器获得的消息,并根据错误标志为消息着色。 我觉得这很有效率。