跨域webmethod给204没有内容

时间:2014-01-28 07:52:07

标签: jquery ajax json cross-domain

我在ASP.NET中创建了一个Webmethod,并尝试通过jQuery AJAX访问它。当我通过浏览器调用Webmethod时,它会给出一个JSON结果,但是当我通过jQuery AJAX调用它时,它在Firefox的Firebug中给出了“ 204 no content ”。 (我的webmethod在一个域中,jQuery AJAX代码在其他域中。)

JQuery Ajax代码:

 $.ajax({
        type: "POST",
        contentType: "application/json; charset=utf-8",
        url: "http://localhost:1177/api/authentication/getusermenu?roleid=1",
           processData: true,
            dataType: "jsonp",
            success: function (msg) {
                alert(msg.d);
            },
            error: function (jqXHR, textStatus, errorThrown) {
                var data = $.parseJSON(jqXHR.responseText);
                alert(data);
            }
        });

Firebug输出:

"Reload the page to get source for: (URL)"

1 个答案:

答案 0 :(得分:0)

尝试以下方法: 1.如果webmethod在同一个应用程序中,那么不需要提供localhost或任何东西。如果在任何其他机器上的web方法并且它是可访问的,那么提供           url:“http:/// ...”而不是localhost:portNo。 2. dataType:“json”,

完整示例如下:

 $.ajax({
            type: "POST",
            url: "ABC.aspx/GetUserMenu?roleid=1",
            data: {},
            contentType: "application/json; charset=utf-8",
            dataType: "json",
             success: function (msg) {
            alert(msg.d);
        },
        error: function (jqXHR, textStatus, errorThrown) {
            var data = $.parseJSON(jqXHR.responseText);
            alert(data);
        }

        });