处理对Ajax请求的响应

时间:2010-10-30 04:26:44

标签: javascript ajax jquery

我正在开发一个项目,我必须向其他人负责的基于java的中间件发送ajax请求。响应我发回的数据,可能会发生4件事......

  1. 用户ID是正确的,因此我收到的回复包括:

    XMLHttpRequest.responseText =“someurl.html”
    XMLHttpRequest.status = 200

  2. 用户ID是正确的,但此人与某个状态不匹配:

    XMLHttpRequest.responseText =“wrongstatusurl.html”
    XMLHttpRequest.status = 200

  3. 用户标识正确但验证码错误,因此我收到的回复包括:

    XMLHttpRequest.responseText =“错误。验证错误。”
    XMLHttpRequest.status = 200

  4. 用户ID不正确:

    XMLHttpRequest.responseText =“错误。不是用户。”
    XMLHttpRequest.status = 200

  5. 因此,您可以看到每个响应都是200 OK。这意味着每个ajax请求都会触发我的“成功”回调(我正在使用jQuery这个位,它有一个内置的success回调作为其ajax方法的一部分)所以我需要将我的回调处理基于实际我收到的文字。正确?

    或者我需要让中间件人员发回更符合请求实际状态的状态代码......这听起来不错吗?


    我的问题:

    这里最好的方法是什么?只需处理返回的纯文本(关于如何最好地执行此操作的建议将是最受欢迎的...只是解析文本?看起来有点不灵活......如果文本有一天会发生什么变化?)或得到其他类型的回复(关于告诉他什么的建议我最需要赞赏...只是说,我需要一种指定状态代码的标题......也许?)。你会怎么处理这个?

1 个答案:

答案 0 :(得分:2)

我认为最好的方法是解析responseText并希望它们永远不会被改变。

如果您负责返回的实际页面/数据,您将拥有更大的灵活性。我通常编写的那种方式(最终你无法控制)是总是返回某种XML / JSON。这样,如果状态为200,您将获得一些数据(无论处理中的错误,还是未找到的页面或其他内容)。在该数据中,我通常会抛出一个标记(true或false)和一个包含任何错误消息数据的标记。如果没有错误,我会在之后返回其余的数据。

然后我会使用responseXML并遍历节点,检查我的状态/错误节点并警告用户错误(只需显示错误节点文本即消息)。如果成功,我将继续处理剩余的节点,具体取决于我需要它们。现在使用JSON和jQuery在ajax方法中支持它会更容易一些。