Jquery ajax在不解析json的情况下达到成功

时间:2014-08-13 14:30:43

标签: javascript jquery ajax json

这与我在jquery的ajax函数中经常遇到的情况非常奇怪和相反。

我有以下javascript代码:

$.ajax({
    url: "/myService.svc/DoAction",
    type: "GET",
    dataType: "json",
    success: function (res) {
        if (res.ErrorCode == 0) {
            //do something
        } else {
            //do something
        }
    },
    error: function (res) {
        //do something
    },
    complete: function () {
        //do something
    }
});

我的服务以json格式构建响应。我的回复标题:

Response            HTTP/1.1 304 Not Modified
X-AspNet-Version    4.0.30319
Content-Length      157
Content-Type        application/json; charset=utf-8

我到达Success ...但是服务的响应没有解析为javascript对象...我收到一个像这样的普通字符串:

[{"ErrorCode": "0", "Data": {"title": "test", "data": [{"name": "someName", "id": "1234-12345678-abcd-1234"}]}, "ErrorMessage": ""}]

如果没有将json字符串解析为javascript对象,它如何到达success

如Jquery文档中所述:

[$.ajax]
[dataType]
"json": Evaluates the response as JSON and returns a JavaScript object. The JSON data is parsed in a strict manner; any malformed JSON is rejected and a parse error is thrown.

修改

我尝试返回一个无效的json字符串,我仍然输入success ...我觉得我错过了一些非常明显的东西!

1 个答案:

答案 0 :(得分:0)

......我知道我错过了一些明显的东西!

我的服务是C#WCF,我在服务中返回String

我的web.config包含以下内容,我在网上找到了有关构建WCF Web服务的教程的一部分:

  <endpointBehaviors>
    <behavior name="webBehavior">
      <webHttp helpEnabled="true" defaultOutgoingResponseFormat="Json" automaticFormatSelectionEnabled="true" />
    </behavior>
  </endpointBehaviors>

请注意automaticFormatSelectionEnabled,它确保无论发送什么内容,都会“正确”格式化。

解决方案有两个方面:

  1. 删除defaultOutgoingResponseFormatautomaticFormatSelectionEnabled,然后自行控制这些标记。 [他们似乎合适...... :(]
  2. 返回ResponseObject而不是String
  3. 有人早些时候提出了这个问题......我现在同意这个问题。 :(