0
<script src="jquery-1.3.2.min.js" type="text/javascript"></script>
<script type = "text/javascript">
function ShowCurrentTime() {
    $.ajax({
        type: "POST",
        url: "Default.aspx/jsonrep",
        data: "{}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        async: true,
        cache: false,
        success: OnSuccess,
        failure: function (response) {
            alert(response.d);
        }
    });
  }
  function OnSuccess(response) {
    alert(response.d);
  }
</script> 

<input id="btnGetTime" type="button" value="Show Current Time" 
       onclick = "ShowCurrentTime()" />

そしてコードファイルコードは

[System.Web.Services.WebMethod]
public string jsonrep()
{
    GetOrders();
    var jsonSerialiser = new JavaScriptSerializer();

    var json = jsonSerialiser.Serialize(list);

    return json.ToString();
}

public List<DataProp> GetOrders()
{
    DataProp o = new DataProp();

    for (int i = 1; i <= 8; i++)
    {
        o.Earning = 20000 * i;
        o.Number = 8 * i;
        list.Add(o);
    }

    return list;
}

json オブジェクトを返す jQuery を使用してサーバー側関数を呼び出したいのですが、関数が機能していません。何が間違っていますか? ページの読み込み時に関数を呼び出すと、関数がjsonデータを返すことで正常に機能します。助けてください

4

1 に答える 1

0

この行に参照がありませんstatic:

public string jsonrep()

に変更します

public static string jsonrep()

メソッドが static である必要がある理由を知りたい場合は、このリンクを参照してください。リンクから:

静的メソッドは、それを含むクラスのインスタンスから切り離された単純なメソッドです。より一般的な代替手段はインスタンス メソッドです。これは、結果が属するクラスの特定のインスタンスの状態に依存するメソッドです。ある意味で、静的メソッドはステートレスメソッドです。

したがって、クラス参照なしでインスタンス化できるのは静的メソッドのみであるため、JS は静的メソッドのみを理解します。

非静的なものを使用したい場合は、asmxサービス/ashxハンドラーを使用することをお勧めします。

于 2013-08-03T06:05:15.263 に答える