对我的Web服务的Ajax查询是在我的json中返回xml

时间:2010-07-28 22:05:19

标签: javascript jquery ajax json jsonp

我遇到了这个问题中提出的确切问题

ASP.NET JSON web service always return the JSON response wrapped in XML

现在已经很晚了,我已经坐在这把椅子上10个小时了,现在试图让ajax和json工作,我所得到的都非常沮丧。

那么有谁知道如何让我的webservice不返回包装在xml中的json对象?如果我只做一个直接的dataType:“json”那么我什么也得不到。我必须做dataType:“jsonp”来从服务器获取任何东西。但是一旦我做了jsonp,我就把我的json包装成xml。

请帮忙 谢谢 谢丽尔

1 个答案:

答案 0 :(得分:3)

如果您将响应类型设置为json jQuery is then checking the response to see if it's valid JSON(因为它是XML,情况并非如此)......当它无效时,它会自动失败,因为 jQuery 1.4+ < /强>

在提出请求时,有3个重要位,by default it needs to be a POST,您需要将contentType设置为"application/json; charset=utf-8",如下所示:

$.ajax({
  url: 'MyService.asmx/Method',
  type: 'POST',
  data: myData,
  dataType: 'json',
  contentType: "application/json; charset=utf-8",
  success: function(data) {
    //do something with data
  }
});

然后在服务器端确保您拥有ScriptService attribute设置,这是一个示例非常最小布局:

[WebService] //here by default when you create the service
[ScriptService]
public class MyService : System.Web.Services.WebService 
{
  [WebMethod]
  public MyObject MyMethod(int id) 
  {
    return new MyObject();
  }
}