0

我的 ASPX 页面中有以下代码,用于从 Web 服务获取一些数据。我不能使用 WCF,所以我使用的是 ASMX 和 .Net 3.5。但是,我得到的是黄色的 ASP.net 错误页面,它谈论将 web.config 错误标记设置为 OFF。如果我从后面的代码调用我的方法并将其 response.write 到页面,我会得到一个我在 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");
        }
    });

网络服务:

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

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

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

4

1 回答 1

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

并在你的成功:参考 msg.d (或有一个翻译来隔离 .Net)给定你的 .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++) {
于 2013-01-24T19:27:52.000 回答