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

标签 jquery ajax 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() {
           });
} 

如您所见,我正在使用 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);
        }
    }

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

我已经尝试过

  • dataType添加到ajax调用中,如上所示
  • 从响应末尾删除 this.Context.Response.flush,这解决了我在发送 header 后调整 header 时遇到的错误。
  • 向方法添加响应格式
  • 向上下文添加Response.ContentType 这些都未能让我获得所需的 JSON 识别。任何帮助将不胜感激。

更新:JSON 格式

{"描述":"数据","代码":"数据","引用":"数据"}

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

[{"Description":"data","Code":"data","reference":"data"}]{"d":null}

我不确定 d null 对象是什么

最佳答案

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

希望这有帮助!

关于jquery - ASP.NET AJAX 返回 JSON 但未识别为 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9939548/

相关文章:

c# - 如何将 xml 参数发送到 WCF?

javascript - 将循环计数传递给 ajax 成功匿名函数

c# - 验证后刷新 asp.net 网页

Asp.Net 3.5 路由到 Web 服务?

javascript - jQuery:前置和附加 <p> 标签

javascript - Ruby 通过日期选择器输入传递参数

javascript - 加载 Jquery Mobile 时未捕获类型错误 : Object function ( name, 基础、原型(prototype))

javascript - 如何从异步调用返回响应?

iis - 增加堆栈大小IIS ASP.NET 3.5

javascript - React - 如何根据另一个中的选择填充两个下拉列表