C# 为什么jQuery it无法管理此JSON?
我有一个C#webservice返回这个json:C# 为什么jQuery it无法管理此JSON?,c#,jquery,web-services,C#,Jquery,Web Services,我有一个C#webservice返回这个json: {"data":"2"} 是的。如果从浏览器加载链接,我可以看到此输出。方法是: [WebMethod] [ScriptMethod(ResponseFormat = ResponseFormat.Json)] public void IsFacebookPageLiked() { JavaScriptSerializer js = new JavaScriptSerializer(); Context.Response.Wr
{"data":"2"}
是的。如果从浏览器加载链接,我可以看到此输出。方法是:
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public void IsFacebookPageLiked()
{
JavaScriptSerializer js = new JavaScriptSerializer();
Context.Response.Write(js.Serialize(new { data = "2" }));
}
我用jQuery将其称为:
$.ajax({
type: "POST",
url: myUrl,
dataType: "json",
contentType: "application/json; charset=utf-8",
success: function (data) {
console.log("success: " + data);
},
error: function (jqxhr, text, error) {
console.log("fail: " + error);
}
});
但结果总是:
fail: (an empty string)
代码怎么了?为什么会引发异常?尝试将public void IsFacebookPageLiked()更改为
公共静态字符串IsFacebookPagedLiked(),然后返回响应。这不是jQuerys的错误。一定有服务器端错误。否则jQuery将不会进入
错误
回调
你怎么能确定这不是客户端的错误
- 检查您的网络流量(使用流量监视器、firebug或浏览器的本地开发人员工具)。也许你可以找到你的回答的提示(例如状态)。可能您的请求没有按预期发送
- 检查回调函数的响应参数(文本和错误)
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public void IsFacebookPageLiked()
{
SimpleMessage message = new SimpleMessage() {Message = "Hello World"};
string json = JsonConvert.Serialize(message);
HttpContext.Current.Response.ContentType = "application/json; charset=utf-8";
HttpContext.Current.Response.AppendHeader("Access-Control-Allow-Origin", "*");
HttpContext.Current.Response.Write(json);
}
响应上的状态代码是什么?(请参阅“网络”选项卡)。状态当然是200。可能服务器上的内容类型在技术上不受支持(也就是说,服务器未设置适当的标头)。删除该行,看看它是否有效。只需一个旁注:使用
console.log(“success:”,data)代码>fiddler说发送和返回了什么?它说“IsFacebookPageLiked Web服务方法名称无效”已通过HttpContext.Current.Response.AppendHeader(“访问控制允许源代码”、“*”)修复代码>