Передайте Несколько Параметров 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
});

и вот веб-сигнатура метода

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

Это хорошо работает.

Но теперь я должен добраться, два параметра передали веб-методу

новый веб-метод похож на это

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

Как я изменяю клиентский код для успешного вызова этой новой сигнатуры метода?

Править:

Следующие 2 синтаксиса работали

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

и

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

где фильтр и локаль являются локальными переменными

97
задан Mikhail 3 February 2016 в 18:23
поделиться

4 ответа

Не используйте конкатенацию строк для передачи параметров, просто используйте хэш данных:

$.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
});
137
ответ дан 24 November 2019 в 05:27
поделиться

Мои 2 цента: Выглядит нормально, мой единственный комментарий: «С» подразумевает что-то вроде «Где» или «Имея», когда вы фактически устанавливаете свойство. Я'

18
ответ дан 24 November 2019 в 05:27
поделиться

просто добавьте столько свойств, сколько вам нужно для объекта данных.

 $.ajax({
                    type: "POST",
                    url: "popup.aspx/GetJewellerAssets",
                    contentType: "application/json; charset=utf-8",
                    data: {jewellerId: filter , foo: "bar", other: "otherValue"},
                    dataType: "json",
                    success: AjaxSucceeded,
                    error: AjaxFailed
                });
7
ответ дан 24 November 2019 в 05:27
поделиться

Has anyone else noticed that the json string/object is invalid in all answers except for David Hedlund's? :)

JSON objects must be formatted in the following manner: {"key": ("value" | 0 | false)}. Also, writing it out as a string requires much less than stringifying the object...

3
ответ дан 24 November 2019 в 05:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: