小编典典

将多个参数传递给jQuery ajax调用

ajax

我有以下jQuery代码在aspx页面中调用webmethod

$.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方法

新的网络方法如下所示

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

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

编辑:

以下2种语法有效

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

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

其中filter和locale是局部变量


阅读 290

收藏
2020-07-26

共1个答案

小编典典

不要使用字符串串联来传递参数,只需使用数据哈希即可:

$.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在注释部分所建议的那样,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
});
2020-07-26