0

ASPXページに以下のコードがあり、Webサービスからデータを取得しています。WCFを使用できないため、ASMXと.Net3.5を使用しています。ただし、返されるのは、web.configエラータグをOFFに設定することについて説明している黄色のASP.netエラーページです。コードビハインドからメソッドを呼び出し、応答をページに書き込むと、JSONビューアーで表示した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の開発ツールを使用すると、問題の一部がサーバーが403Forbiddenエラーを返すことであることがわかりました。いくつかの調整を行った後、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

成功した場合: .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++) {
于 2013-01-24T19:27:52.000 に答える