【问题标题】:ASP.NET AJAX returning XML when JSON specified指定 JSON 时 ASP.NET AJAX 返回 XML
【发布时间】:2012-03-08 09:36:53
【问题描述】:

这是我第一次在 ASP.NET 中使用 AJAX,所以请允许我一些绳索。

我有一个简单的 AJAX 请求,我希望返回一个 JSON 字符串,但 ASP.NET 一直将 JSON 字符串格式化为 XML

这是我的代码

[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)] 
public string GetModels()
{
   string response;

   using (var context = new myDataModel())
   {
     var m = from model in context.ListModels select model;
     var serializer = new JavaScriptSerializer();
     response = serializer.Serialize(m);
   }

   return response;
}

这被调用但返回一个包含我的 JSON 字符串的 XML 节点真的很困惑

【问题讨论】:

    标签: asp.net ajax webmethod


    【解决方案1】:

    这是我使用 ASP.NET 从 Web 服务返回 JSON 的方法

    [WebMethod]
        [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
        public void GetJSON()
        {
    
            DataTable dtMarkers = new DataTable();
            dtMarkers.Load(<<STORED PROCEDURE>>.GetReader());
    
            string[][] myArray = new string[dtMarkers.Rows.Count][];
            int i = 0;
            foreach (DataRow marker in dtMarkers.Rows)
            {
                myArray[i] = new string[] { marker["ID"].ToString(), marker["Title"].ToString(), marker["Blurb"].ToString(), marker["Url"].ToString(), marker["LongLatPoint"].ToString() };
                i++;
            }
    
            JavaScriptSerializer js = new JavaScriptSerializer();
            string strJSON = js.Serialize(myArray);
            Context.Response.Clear();
            Context.Response.ContentType = "application/json";
            Context.Response.Flush();
            Context.Response.Write(strJSON);
    
        }
    

    此特定示例从数据库中读取 Googlemaps 指针并将它们返回到 ASP.NET 页面,以便在 Google Maps 实例上显示。

    【讨论】:

      【解决方案2】:

      尝试将其定义为:

      public JsonResult GetModels()
      {
          //.........
      
          return new JsonResult() { Data = new { result=response  } };
      }
      

      【讨论】:

      • 感谢 Bjarki 和 simon,我已经调试了该方法,发现 JavaScriptSerializer 正在返回一个 json 字符串,所以我假设它是添加 xml 数据的 webmethod?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-26
      • 2023-04-05
      • 1970-01-01
      • 2017-05-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多