asp.net – 将多个参数传递给jQuery ajax调用

我有以下jquery代码调用一个webmethod在aspx页面

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

这里是web方法签名

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

这工作正常。

但现在我需要得到两个传递给web方法的参数

新的web方法看起来像这样

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

如何更改客户端代码以成功调用此新方法签名?

编辑:

以下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
});

更新:

如@Alex在comments部分所建议的,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
});
http://stackoverflow.com/questions/1916309/pass-multiple-parameters-to-jquery-ajax-call

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:asp.net – 将多个参数传递给jQuery ajax调用