ASP.NET AJAX返回JSON但未被识别为JSON

Dev*_*and 1 ajax jquery asp.net-3.5

我有这个功能让我回到管理人员名单

function getManagers() {
   var jqxhr = $.ajax({
                   type: 'POST',
                   contentType: "application/json; charset=utf-8",
                   url: '/webservice.asmx/GetManagers',
                   dataType: 'json'
               }).success(function(data) {
                   var options = '<option selected="selected" disabled="disabled">Select Manager</option>';
                   for (var i = 0; i < data.length; i++) {
                       options += '<option value="' + data[i].PostRef + '">' + data[i].Description + '</option>';
                   }
                   $('#ReceivingCellManager').html(options);
               }).error(function(data) {
                   $('.ErrorText').html('Manager load failed please refresh page with F5');
                   $("#errormessage").dialog('open');
               }).complete(function() {
           });
} 
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,我正在使用JQuery,并希望与可用的管理器一起使用下拉列表

我服务中的方法看起来像这样

    [WebMethod]
    [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
    public void GetManagers()
    {
        using (var context = new ConcessionModel())
        {             
            var rcm = Business.GetManager();
            var serializer = new JavaScriptSerializer();
            var response = rcm.Count() != 0
                ? serializer.Serialize(rcm)
                : serializer.Serialize(new Error { Code = "500", Message = "Manager Retrieval Failed" });
            this.Context.Response.Clear();
            this.Context.Response.ContentType = "application/json";
            this.Context.Response.Write(response);
        }
    }
Run Code Online (Sandbox Code Playgroud)

当调用该方法时,我收到200 OK的响应,并且响应包含JSON我希望我遇到的问题是响应未被识别为JSON.

我试过了

  • 如上所示,将dataType添加到ajax调用
  • 从响应结束时删除this.Context.Response.flush,这可以解决我在发送后调整标题时遇到的错误.
  • 在方法中添加响应格式
  • 向上下文添加Response.ContentType这些都无法让我获得JSON所需的识别.任何帮助将非常感激.

更新:JSON格式

{ "描述": "数据", "代码": "数据", "参考": "数据"}

更新JSON响应 我在响应中看到一些奇怪的东西我的响应如下

[{"Description":"data","Code":"data","reference":"data"}]{"d":null}
Run Code Online (Sandbox Code Playgroud)

我不确定d null对象是什么

Kev*_*lla 5

为了从服务中访问json对象(如"Dog"类的对象),方法返回类型应为"Dog".不要在服务中使用response.write.然后,您可以使用"data.d"从成功消息中访问数据.

希望这可以帮助!