0

この手法を使用してサーバー側のメソッドを実行しようとしています:

Javascript Ajax 関数

function storeLocal(brand, type) {
    $.ajax({
        type: "POST",
        contentType: "application/json; charset=utf-8",
        data: "{brand:'" + brand + "'}",
        url: "Jquery Site.Master/storeLocal",
        datatype: "json",
        success: OnSuccess(brand),
    });
}

function OnSuccess(brand) {
    alert(brand);
}

C# メソッド:

[WebMethod]
public static object storeLocal(string brand)
{
    HttpContext.Current.Session.Add("Brand", brand);
}

実行するコード行は次のとおりです。

<li>
    <a class="strong" onclick="storeLocal('petzl','harness')" href="About.aspx">Harnesses</a>
</li>

正しく実行されていませんが、コードに特定のエラーがありますか? 私がこの方法を使用している理由は、小さなプロジェクト用の動的メニューが必要であり、ユーザーがセッションで選択した特定の「li」をセッションに保存して、リダイレクトされたページにコンテンツをロードできるようにするためです。どうもありがとうエイドリアン

4

4 に答える 4

1

問題である可能性のあるメソッドに戻り値はありません。メソッドは次のようになります。

[WebMethod]
 public static object storeLocal(string brand)
 {
     HttpContext.Current.Session.Add("Brand", brand);
     return "value" +brand;
 }
于 2012-09-12T07:32:30.547 に答える
0

URL と成功は見栄えがよくありません。

1 - ajax 呼び出し内で、success 関数に引数を渡しません。c# で指定された webmethod によって何かが返されます。data propriety でデータを指定し、それが webmethod に渡される引数として使用されます。

2 - マスター ページを使用して webmethod を呼び出すことはできません。作業中のページで指定する必要があります。マスターではなくaspxファイル。ページはマスターから継承されますが、マスターではありません。マスターページファイルを指定したページです。

エラーを識別するためにこれを試してください。これは、返されるものを確認するためのものです

error: function (error) {
    alert(JSON.stringify(error));
}
于 2012-09-12T08:52:40.710 に答える
0

あなたのリクエストにはいくつかのエラーがありますajax:

  1. urlパラメータ値が適切な URL ではありません。
  2. OnSuccessメソッドを正しく割り当てていません。

次のように変更してみてください。

function storeLocal(brand, type) { 
    $.ajax({ 
        type: "POST", 
        contentType: "application/json; charset=utf-8", 
        data: "{brand:'" + brand + "'}", 
        url: "ProperSiteUrl/storeLocal", 
        datatype: "json", 
        success: OnSuccess, 
    }); 
} 

storeLocalまた、 Web メソッドからは何も返されません。次のように変更してみてください。

 [WebMethod]  
 public static object storeLocal(string brand)  
 {  
     HttpContext.Current.Session.Add("Brand", brand);  
     return ...;
 } 

また、JSON をサーバーに送信しますが、単一のパラメーターの場合は、キーと値のペアとして送信する方が簡単な場合があります。

...
data: "brand=" + brand
...
于 2012-09-12T07:37:54.477 に答える
0

あなたのコードが正しいかどうかわかりません! href と onclick の両方を指定すると、onclick ajax イベントが完了する前であっても、ページが about.aspx に移動する可能性があります。

href を削除するか、onclick イベントを href='javascript:storelocal()' 内に配置して、webmethod から値を返すようにしてください。

webmethod でブレークポイントを保持し、コンテンツが webmethod に渡されているかどうかを確認します。

于 2012-09-12T07:39:37.923 に答える