Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/394.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.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
Javascript ASP.NETWeb服务总是返回XML而不是JSON_Javascript_Jquery_Asp.net_Json_Web Services - Fatal编程技术网

Javascript ASP.NETWeb服务总是返回XML而不是JSON

Javascript ASP.NETWeb服务总是返回XML而不是JSON,javascript,jquery,asp.net,json,web-services,Javascript,Jquery,Asp.net,Json,Web Services,目前我使用asp.NETWeb服务,但当我通过ajax调用web服务方法时,它总是返回XML而不是json 我试着 但这对我来说也不管用 JS:- LoginWebservice.asmx:- [WebMethod] [ScriptMethod(ResponseFormat = ResponseFormat.Json)] public string Demo() { return "Harshit"; } 我错在哪里 JSFIDLE示例:-

目前我使用asp.NETWeb服务,但当我通过ajax调用web服务方法时,它总是返回XML而不是json

我试着

但这对我来说也不管用

JS:-

LoginWebservice.asmx:-

 [WebMethod]
    [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
    public string Demo()
    {
        return "Harshit";
    }
我错在哪里

JSFIDLE示例:-


JSONP不是JSON,JSONP用于克服同源策略(站点A不能向站点B发出ajax请求)。要解决此问题,站点A将创建一个脚本标记:

document.createElement("script")
然后将其源设置为站点B,通常指定一个回调,如www.B?callback=callMe

现场B的典型响应为:

callMe({siteBSays:"hello"});
JQuery隐藏了为您创建javascript元素的过程,因此它看起来像一个普通的ajax请求。确保站点B有正确的响应类型标题,我认为是text/javascript


另一种跨域请求的方法是站点B有一个响应头,通过设置响应头访问控制允许源站,站点a可以向其发出ajax请求(cors)。首先,您必须使用Post方法向web服务发送请求。正如您使用的
JSONP
一样,它总是查找回调,您必须为它定义回调方法

还有一件事你必须补充如下

[System.Web.Script.Services.ScriptService]
    // To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. 
    // [System.Web.Script.Services.ScriptService]
    public class LoginWebservice : System.Web.Services.WebService
    {

        [WebMethod]
        public string Demo()
        {
            return "Harshit";
        }
    }
指示可以从脚本调用Web服务。该类不能被继承

您的aspx/HTML将包含

$.ajax({
            type: "Post",
            contentType: "application/json; charset=utf-8",
            url: "http://www.quietincomes.com/LoginWebservice.asmx/Demo",
            dataType: "json",
            success: function (data) {
                alert("1" + data);
            },
            error: function (result) {
                alert("2" + JSON.stringify(result));
            }
});
参见下面的输出


有一段时间会返回JSON,但您需要返回JSONP,这意味着要寻找一个名为“回调”的get参数,并将您的JSON包装在其中(请参见我的答案),您的站点是否需要向其他域公开此服务,或者此服务仅由同一域的(页面)使用?实际上我有一个网站。。我通过url重写和iis中的一些设置创建了子域。现在,当我的网站harshit.abc.com使用完整的url调用Web服务到它自己的网站时,它会在我的ajax请求中返回数据。但是数据总是xml格式的。结果出现错误回调没有子域被认为是不同的源sub.b.com和b.com不能相互发出ajax请求,除非使用cors头或JSONP。下面是我发现的一些东西,您可以用来让JSONP工作:(未来的访问者:很抱歉没有发布完整的答案,但是那篇文章包含了太多的信息,无法在这里发布)XMLHttpRequest无法加载。访问控制不允许原点允许原点。
$.ajax({
            type: "Post",
            contentType: "application/json; charset=utf-8",
            url: "http://www.quietincomes.com/LoginWebservice.asmx/Demo",
            dataType: "json",
            success: function (data) {
                alert("1" + data);
            },
            error: function (result) {
                alert("2" + JSON.stringify(result));
            }
});