C# PageMethods可以返回XML吗?
我在玩一些ASP.NET PageMethods,我尝试使用以下方法简单地返回XML:C# PageMethods可以返回XML吗?,c#,asp.net,C#,Asp.net,我在玩一些ASP.NET PageMethods,我尝试使用以下方法简单地返回XML: [WebMethod] [ScriptMethod(ResponseFormat = ResponseFormat.Xml)] public static string GetIPLocation(string ip) { var doc = XDocument.Load(HttpContext.Current.Server.MapPath("relative xml path")); var
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Xml)]
public static string GetIPLocation(string ip)
{
var doc = XDocument.Load(HttpContext.Current.Server.MapPath("relative xml path"));
var s = doc.ToString();
return s;
}
完全相同的代码实际上适用于ASMX服务(尽管删除了static
修饰符)
但事实证明,在使用PageMethods时,我无法获取XML,相反,我接收的是页面的HTML代码。
以下是我的AJAX代码:
$.ajax({
url: "<%: this.ResolveClientUrl("~/relative path/GetIPLocation") %>",
type: "POST",
contentType: "application/xml; charset=utf-8;",
dataType: "xml",
data: "{ip:'"+$target.val()+"'}",
async: true,
cache: false,
success: function (msg) {
console.log("MSG: %o", msg);
viewModel.ip1(msg.d.IP);
},
error: function (XHResponse, errorMessage, errorCode) {
console.log("AJAX Error: %o", XHResponse);
}
});
及
由于您似乎正在发送JSON格式的数据,因此请尝试在
contentType
中使用application/JSON
而不是application/xml
进行jQuery调用
描述了您发送的信息的格式 用你的帖子contentType
描述了您在响应中所期望的内容dataType
不匹配可能会产生奇怪的结果。您是否尝试过简单地返回XDocument,而不是先将其更改为字符串?我刚刚返回了,并且得到了相同的结果,我更新了我的问题如果在jQuery调用的contentType中使用application/json而不是application/xml,您会得到什么?ContentType描述您随帖子发送的信息的格式。数据类型描述您在响应中所期望的内容。不匹配可能会产生奇怪的结果。您是否尝试过设置ResponseFormat=ResponseFormat.Json?@JamieSee您是对的,将contentType更改为Json有效(因为我在请求中发送Json)。现在我发送json并接收XML。这就是我想要的实验。你能把你的回复贴出来作为回答,把它标记为接受吗
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Xml)]
public static XDocument(GetIPLocation(string ip)
{
return XDocument.Load(HttpContext.Current.Server.MapPath("relative xml path"));
}
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Xml)]
public static XmlDocument(GetIPLocation(string ip)
{
var x = new XmlDocument();
x.LoadXml(HttpContext.Current.Server.MapPath("relative xml path"));
return x;
}