6

ページのコード ビハインド ファイルに WebMethod を次のように作成しました。

[System.Web.Services.WebMethod()]
public static string Test()
{
    return "TEST";
}

テストするために、次の HTML ページを作成しました。

<html>
<head>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"/></script>
    <script type="text/javascript">
        function test() {            
            $.ajax({
                type: "POST",
                url: "http://localhost/TestApp/TestPage.aspx/Test",
                data: "{}",
                contentType: "application/json; charset=utf-8",
                dataType: "text",
                success: function(msg) {
                    alert(msg.d);
                }
            });
        }
    </script>
</head>
<body>
    <button onclick="test();">Click Me</button>
</body>
</html>

ボタンをクリックすると、AJAX が起動しますが、何も返されません。コードをデバッグしてTest()も、メソッドは呼び出されません。何か案は?

4

5 に答える 5

6

試す

url: "TestPage.aspx/Test"

または、ページにヒットする相対URL。

同一生成元ポリシーに誤って違反している可能性があります。

また、まだそこにいませんが、ad:wrappedobjectを期待しています。そのままでは、文字列を取得するだけです。

これはあなたが行きたいところにあなたを連れて行くはずです。

    function test() {            
        $.ajax({
            type: "POST",
            url: "TestPage.aspx/Test",
            data: "{}",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function(msg) {
                alert(msg.d);
            }
        });
    }
于 2010-05-04T21:28:42.433 に答える
2

データ型は「json」である必要があると思います。エラー関数を追加して、返されるエラーステータス、つまり404が見つからない、500サーバーエラーなどを確認します。

于 2010-05-04T21:34:05.773 に答える
1

jQueryを使用してWebMethodsを呼び出すためにこのjavascript関数を作成しました。

function pageMethod(fn, params, successFn, errorFn) {  
    var pagePath = window.location.pathname;  

    var jsonData = $.toJSON(params);

    $.ajax({  
        type: "POST",  
        url: pagePath + "/" + fn,  
        contentType: "application/json; charset=utf-8",  
        data: jsonData,  
        dataType: "json",  
        success: successFn,  
        error: errorFn  
    });
}

その$.toJsonシリアル化は、jquery.json-1.3プラグインによって実現されます。

ご覧のとおり、dataTypeは「json」である必要があります

于 2010-05-04T21:30:36.117 に答える
0

POSTを受け入れる/許可するようにTest()を設定する必要があります

于 2010-05-04T21:07:16.963 に答える
0

ページに PageMethods が適切に登録されている場合は、PageMethods という Microsoft 登録済みオブジェクトを使用してそれらを呼び出すことができます。

aspx ページがすべての Microsoft 固有のライブラリをロードした後に、JavaScript を実行する必要があります。それらが読み込まれると、次のように PageMethod を呼び出すことができます。

PageMethods.Test(function() OnSucceeded{}, function() OnFailed{});

より良い例へのリンクは次のとおりです。

http://www.junasoftware.com/blog/using-jquery-ajax-and-page-methods-with-a-asp.net-webservice.aspx

まだ行っていない場合は、Firebug を使用してこれらのクライアント側の呼び出しをデバッグすることを強くお勧めします。Firebug は、実際に何が起こっているのかを判断するために必要なすべての情報を提供します。

getfirebug.com

于 2010-05-04T21:12:04.737 に答える