5

ここでは長年のWinFormプログラマーですが、Webプログラミングシーンは初めてです。Visual Studio 2010を使用していて、新しいWebSiteプロジェクトを作成しました。作成したWebメソッドをajaxで呼び出せないようです。ページのボタンをクリックしても、何も起こりません。

WebSiteプロジェクトを作成すると、jquery1.4.1がScriptsフォルダーに自動的に追加されるようです。

Default.aspxに、2つのスクリプトタグを追加します。

<script src="Scripts/jquery-1.4.1.js" type="text/javascript"></script>
<script language="javascript" type="text/javascript" src="Scripts/Process.js">

Process.jsでonclick関数が定義されているページにボタンを配置しました。

<input id="btnTest" type="button" value="Test" onclick="btnTest_onclick()" />

Process.jsには、次のコードがあります。

function btnTest_onclick() {

    var strData = JSON.stringify({
        userid: 5
    });

    alert(strData);

    $.ajax({
        url: 'Default.aspx/GetData',
        type: "POST",
        data: strData,
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: Success,
        failure: Failure,
        async: true
    });
}

function Success(data) {
    alert("success");
}

function Failure(data) {
    alert("failure");
}

Default.aspx.csの場合:

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }

    [WebMethod()]
    public static string GetData(int id)
    {
        return "hello, my id is " + id;
    }
}
4

3 に答える 3

5

JQueryを使用してAjaxリクエストを作成する必要があるかどうかはわかりませんが、ASP.NETajaxの機能を使用してページメソッドへのajaxリクエストをより簡単に実行できます。

まず、PageMethodsを使用するには、スクリプトマネージャーコントロールをページに追加し、EnablePageMethods="True"を指定する必要があることに注意してください。

そうすると、ScriptManagerはページ上で定義されたページメソッドのプロキシを表すPageMethodsクライアント側定義をレンダリングし、Ajaxリクエストを使用してこのメ​​ソッドを簡単に呼び出すことができます。

したがって、次のコードを試すことができます。

<asp:ScriptManager ID="ScriptManager" runat="server" EnablePartialRendering="true" EnablePageMethods="True" />
<input id="btnTest" type="button" value="Test" onclick="btnTest_onclick()" />
<script type="text/javascript">
    function btnTest_onclick() {

        PageMethods.GetData(5, Success, Failure);
    }

    function Success(data) {
        alert("success");
        alert(data);
    }

    function Failure(data) {
        alert("failure");
    }

</script>

ご覧のとおり、このコードはコード行が少なく、機能します。

于 2012-11-19T19:47:30.603 に答える
1

データ項目名は、ページメソッドの引数と一致する必要があります。

 var strData = JSON.stringify({
                id_MATCH: 5
            });

    [WebMethod()]
    public static string GetData(int id_MATCH)
    {
        return "hello, my id is " + id_MATCH;
    }
于 2012-11-16T21:53:16.140 に答える
0

以下は、Ajaxの投稿と処理するWebメソッドです。

<input id="btnTest" type="button" value="Test" onclick="btnTest_onclick()" />
<script type="text/javascript" >
function btnTest_onclick() {

var strData = JSON.stringify({
    userid: 5
});

alert(strData);

$.ajax({
    url: 'Default.aspx/GetData',
    type: "POST",
    data: strData,
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: Success,
    failure: Failure,
    async: true
});
}

function Success(data) {
alert("success");
}

function Failure(data) {
alert("failure");
}</script>

[System.Web.Services.WebMethod()]
    public static string GetData(int userid)
    {
        return "hello, my id is " + userid;
    } 

$.ajaxから送信されたデータ名がwebmethodと同じである上記のコードを確認してください。

ありがとう

于 2012-11-25T10:13:09.893 に答える