1

我的 jQuery fu 是新的,所以如果这个问题确实如此,请原谅显而易见的问题。

jQuery ajax 文档显示错误和成功定义如下:

error(jqXHR, textStatus, errorThrown)
success(data, textStatus, jqXHR)

这让我有点一致性,因为默认情况下,服务器端我返回状态(200、401、404 等)以及 JSON 编码响应,这可能是 json 错误或成功字符串、数组、对象等等。

基本上发生的事情是成功接收json字符串(coffeescript)

success: (data) ->
  $('#status').html( data )

我可以直接打印 json 响应字符串,这很令人困惑,因为等效的错误版本需要我解析 json 字符串并访问数据对象的 responseText 属性:

error: (data) ->
  $('#status').html( jParse(data.responseText) )

那么,我怎样才能让客户端镜像服务器端的一致性呢?即响应 json 服务器端并知道我需要在客户端解析/访问对象属性。

谢谢

4

2 回答 2

1

Ok, a bit clearer now:

ajax success's first argument, data, is automatically parsed according to mime type if no dataType param option was set.

That explains why, when handling a json map containing say, an order number, I do not have to parse it client-side, could simply refer to data.orderNum

On the other hand, there is no such mime type inference on ajax error's first argument, jqXHR, which explains why I do have to parse the reply prior to referencing attribs like data.responseText.

Probably old hat to many, but good to know what to expect from success/error, was getting double, double quoted string replies and other oddities...

于 2012-06-15T17:11:29.007 回答
1

据我了解,在 HTTP 状态代码中指示成功(或其他)的“RESTful”服务中,您不应该将有意义的内容放入错误条件的 HTTP 正文中。而是将其放在40x错误代码的文本中。

于 2012-06-15T16:12:29.573 回答