Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么jQuery it无法管理此JSON?_C#_Jquery_Web Services - Fatal编程技术网

C# 为什么jQuery it无法管理此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

我有一个C#webservice返回这个json:

{"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(“访问控制允许源代码”、“*”)修复