2010-10-30 229 views
0

我正在开发一个项目,我必须向其他人负责的某个基于java的中间件发送ajax请求。 4件事情可以响应我回来后的数据发生......处理对Ajax请求的响应

  1. 的用户ID是正确的,所以我收到响应包括:

    XMLHttpRequest.responseText =“someurl.html”
    的XMLHttpRequest。状态= 200

  2. 的用户ID是正确的,但人不匹配一定的地位:

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

  3. 的用户ID是正确的,但验证码是错误的,所以我接收所述响应包括:

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

  4. 的用户ID是不正确的:

    XMLHttpRequest.responseText =” 错误。没有用户。”
    XMLHttpRequest.status = 200

所以你可以看到每个响应是200 OK,这意味着每一个Ajax请求打我的‘成功’回调(我使用jQuery,该位并且它有一个内置的success回调函数作为它的ajax方法的一部分),所以我需要将回调处理基于我接收到的实际文本回来,正确?

无论是我还是需要让中间件人员发回与请求的实际状态更好匹配的状态代码...听起来是否正确?


我的问题:

是什么在这里,最好的方法?只需处理返回的纯文本(关于如何最好地做到这一点的建议将是最值得赞赏的......只是解析文本?似乎有点不灵活......如果文本在某一天改变会怎么样?)或得到其他某种回应(建议告诉他我最需要赞赏......只是说,我需要某种指定状态代码的头......也许......)。你将如何处理?

回答

2

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

如果您负责实际返回的页面/数据,您将拥有更大的灵活性。我通常写的那种方式(你无法控制的结局)总是返回某种XML/JSON。这种方式如果状态是200,你会得到一些数据(不管处理中的错误,找不到页面或某些东西)。在这些数据中,我通常会为任何错误消息抛出一个标记(true或false)和一个标记以及数据。如果没有错误,我会在之后返回其余的数据。

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

+0

感谢您的回复。现在,我要求他们将响应更改为至少返回一个数字:1,2,3,4,以便我可以基于此进行分支。我认为这会比试图解析文本更有前途。不知道他们是否会批准我的请求,但似乎更容易做到这一点对我来说。 – Lothar 2010-10-30 05:02:30

+0

哦,我认为解析文本是绝对可怕的。但是,考虑到你所拥有的东西,它看起来像是你唯一的选择。那是除非他们希望同意为你做一些改变。返回数字的问题在于,知道这些数字意味着什么,并且如果它们改变了含义并且没有像原始的responseText改变那样通知它,这仍然取决于您。 – pinkfloydx33 2010-10-30 05:10:44