使用jsonp调用外部站点webmethod?

时间:2012-04-03 16:15:23

标签: c# asp.net json jsonp

我正在尝试调用外部网站webmethod,并发布一些数据。我尝试了很多不同的方法,仍然无法调用方法。

这是我的js代码:

$.ajax({
            url: "http://sitename.com/methods.aspx/mywebmethod",
            data: "{'id':'" + 4 + "'}",
            dataType: "jsonp",
            type: "GET",
            contentType: "application/json; charset=utf-8",
            success: function (data) {
                alert(data);
            },
            error: function (XMLHttpRequest, textStatus, errorThrown) {
                alert(errorThrown);
            }
        });

这是我的webmethod代码:

[WebMethod()]
        public static bool mywebmethod(int id)
        {
if(id != 0){
            return true;}
else{return false;}
        }

我总是得到相同的回复

Error: jQuery{code} was not called

我缺少什么?

2 个答案:

答案 0 :(得分:3)

JSONP并不神奇。

您只能使用JSONP从返回JSONP script的网址中读取数据 ASP.Net WebMethods不支持JSONP。

答案 1 :(得分:0)

我猜你错过了正确的属性,如下(在.asmx定义中):

    [WebMethod(EnableSession = true)] // optional, but usually forgotten
    [ScriptMethod(UseHttpGet = true, ResponseFormat = ResponseFormat.Json)]
    public bool MyMethod(int id)
    {
        return true;
    }

此外,您还需要使用Content-rewrite模块来处理前导回调参数:

http://www.codeproject.com/Articles/43038/Accessing-Remote-ASP-NET-Web-Services-Using-JSONP