Ajax Webservice调用

时间:2013-01-24 18:36:50

标签: asp.net ajax web-services cross-domain

我在ASPX页面中有以下代码,用于从Web服务获取一些数据。我不能使用WCF所以我使用的是ASMX和.Net 3.5。但是,我得到的是黄色ASP.net错误页面,讨论将web.config错误标记设置为OFF。如果我从代码后面调用我的方法并将它响应到页面,我会得到一个我在JSON Viewer中查看的Json字符串,它解析得很好。我的问题是URL格式。我在这做错了什么。我找到的每个例子都使用webservice.asmx / Method格式。我还将协议添加到我的web.config

<protocols>
    <add name="HttpGet"/>
    <add name="HttpPost"/>
</protocols>

页面脚本:

 $.ajax({
        type: 'GET',
        contentType: "application/json; charset=utf-8",
        url: 'http://myserver/mywebservice.asmx/MyMethod',
        dataType: 'jsondata',
        success: function (msg) {
            var table = "<table><tr><th>ID</th><th>Title</th></tr>"
            for (var i = 0; i <= msg.length - 1; i++) {
                var row = "<tr>";
                row += "<td>" + msg[i].ID + "</td>";
                row += "<td>" + msg[i].Title + "</td>";
                row += "</tr>";
                table += row;
            }
            table += "</table>";
            $("#myDiv").html(table);
        },
        complete: function () {
            alert("complete");
        }
    });

web服务:

    <WebMethod(), ScriptMethod(ResponseFormat:=ResponseFormat.Json, UseHttpGet:=True)> _
Public Function MyMethod() As String
    'removed for shorter post
End Function

更新:所以使用Chrome中的开发工具我发现我的部分问题是服务器返回403 Forbidden错误。经过som调整后,我想出了一个部分解决方案,通过json格式化我的数据。但是,json格式的文本现在包装在XML中。 :-(

我还能弄清楚如何从我的json中获取XML。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

你应该

contentType: "application/json; charset=utf-8",
url: 'http://myserver/mywebservice.asmx/MyMethod',
dataType: 'jsondata',

类似于:

contentType: "application/json",
url: '/folderonmyserver/mywebservice.asmx/MyMethod',
dataType: 'json',
data: "{}", // needed for .Net not to blow up sometimes - or send real data

并且在您的成功中:给出您的.net版本参考msg.d(或者有一个用于隔离.Net版本的翻译)

success: function (msg) {
    var mydata = msg.d;
    var table = "<table><tr><th>ID</th><th>Title</th></tr>"
    for (var i = 0; i <= mydata.length - 1; i++) {