0

プロトコル jsonp を使用して Web メソッドを呼び出します。

このコードを Web サービスに使用します。

public class Service1 : System.Web.Services.WebService
{
    [WebMethod]
    [ScriptMethod]
    public string HelloWorld()
    {
        return "Hello World";
    }
}

そして、これはクライアント側にjasonを使用したJqueryで:

        $.ajax({
            type: "POST",
            contentType: "application/json; charset=utf-8",
            url: 'http://localhost:50837/Service1.asmx/HelloWorld',
            data: {},
            dataType: "json",

            success: function(Msg) {
                alert('success:' + Msg.d.FirstName);

            },
            error: function(xhr, textStatus, errorThrown) {
                alert("error");
            }

        });

    }

この Jquery は常にエラー メッセージを表示しますが、その理由はわかりません。誰かが私を助けることができますか?

4

1 に答える 1

2

Web サービスをサイトの一部として配置する必要があります。これを行わないと、Same Origin Policy の問題により、コードは機能しません(「参考文献」を参照)。

ASP.NET MVC、ASMX Web サービス、WCF サービスなど、さまざまな手法で開発された多くのアプリケーションを同じサイトに配置でき、すべてがうまく連携できます。これは、より複雑な JSONP なしでできる唯一の方法です。あなたの状況では、JSONP は大きすぎます。

あなたの質問は、 JSON を使用して AJAX および JQuery から単純な Web サービス (.asmx ファイル) を呼び出す - 解析エラーとほぼ同じです。動作する Hello Wold の例が必要な場合は、完全なコード例への URL が見つかります。

Same Origin Policy を解決するさまざまな方法の詳細については、 XHR リクエストの作成に関する質問 を参照してください。これを読めば、Same Origin Policy の問題が非常に複雑であることが理解できます。あなたはそれを解決することができますが、あなたの場合、実際にはすべてを同じ Web サイトに配置して相対パスを使用する必要はありません。

于 2010-09-09T20:05:27.487 に答える