0

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

我试试

ASP.Net Web 服务不会返回 JSON - 始终是 XML

但它也不适合我..

JS:-

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

LoginWebservice.asmx :-

 [WebMethod]
    [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
    public string Demo()
    {
        return "Harshit";
    }

我错在哪里..

jsfiddle 示例:-

http://jsfiddle.net/EXvqc/

4

2 回答 2

1

首先,您必须使用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));
            }
});

请参阅下面的输出

在此处输入图像描述

于 2013-04-24T14:51:03.440 回答
-1

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 通过设置响应标头 Access-Control-Allow-Origin 向它发出 ajax 请求(cors)

于 2013-04-24T14:47:54.223 回答