1. ホーム
  2. asp.net

[解決済み] jQueryのajax呼び出しに複数のパラメータを渡す

2022-10-25 03:11:29

質問

aspxページでwebmethodを呼び出すための以下のjqueryコードを持っています。

$.ajax({
    type: "POST",
    url: "popup.aspx/GetJewellerAssets",
    contentType: "application/json; charset=utf-8",
    data: '{"jewellerId":' + filter + '}',
    dataType: "json",
    success: AjaxSucceeded,
    error: AjaxFailed
});

そして、これがウェブメソッドの署名です。

[WebMethod]
public static string GetJewellerAssets(int jewellerId)
{

これは問題なく動作します。

しかし、今度はWebメソッドに渡される2つのパラメータを取得する必要があります

新しいWebメソッドは次のようになります。

[WebMethod]
public static string GetJewellerAssets(int jewellerId, string locale)
{
}

この新しいメソッドシグネチャをうまく呼び出すには、クライアントコードをどのように変更すればよいでしょうか?

EDITです。

以下の2つの構文が動作しました。

data: '{ "jewellerId":' + filter + ', "locale":"en" }',

data: JSON.stringify({ jewellerId: filter, locale: locale }),

ここで、filter と locale はローカル変数です。

どのように解決するのですか?

パラメータの受け渡しに文字列連結を使用せず、データハッシュを使用する。

$.ajax({
    type: 'POST',
    url: 'popup.aspx/GetJewellerAssets',
    contentType: 'application/json; charset=utf-8',
    data: { jewellerId: filter, locale: 'en-US' },
    dataType: 'json',
    success: AjaxSucceeded,
    error: AjaxFailed
});


UPDATEです。

コメント欄で@Alexが提案したように、ASP.NETのPageMethodはパラメータがリクエストでJSONエンコードされることを期待するので JSON.stringify をデータハッシュ上に適用する必要があります。

$.ajax({
    type: 'POST',
    url: 'popup.aspx/GetJewellerAssets',
    contentType: 'application/json; charset=utf-8',
    data: JSON.stringify({ jewellerId: filter, locale: 'en-US' }),
    dataType: 'json',
    success: AjaxSucceeded,
    error: AjaxFailed
});