У меня есть следующий код jquery для вызова веб-метода на странице 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 }),
где filter и locale - это локальные переменные
data: JSON.stringify({ jewellerId: filter, locale: locale })
это лучший способ, который я каждый нашел, Спасибо @ChrisCaJSON.stringify
с литералом объекта вы ДОЛЖНЫ включать имя параметра в двоеточие, заключенное в{}
фигурные скобки. ИспользованиеJSON.stringify(objectLiteral)
не работает.[WebMethod] [ScriptMethod(UseHttpGet = true)] public static string TestIBAN(string ccc)
?Ответы:
Не используйте конкатенацию строк для передачи параметров, просто используйте хэш данных:
ОБНОВИТЬ:
Как было предложено @Alex в разделе комментариев, ASP.NET PageMethod ожидает, что параметры будут закодированы в JSON в запросе, поэтому
JSON.stringify
их следует применять к хешу данных:источник
JSON.stringify( myObject )
возможность создания строки JSON из объекта javascript, если вы хотите позже сгруппировать свои параметры в класс.источник
просто добавьте к объекту данных столько свойств, сколько вам нужно.
источник
data
на стороне сервера?НЕ используйте приведенный ниже метод для отправки данных с помощью вызова ajax.
Если по ошибке пользователь вводит специальный символ, например одинарную или двойную кавычку, вызов ajax завершается ошибкой из-за неправильной строки.
Используйте метод ниже для вызова веб-службы без каких-либо проблем
В приведенном выше параметре указано имя объекта javascript и преобразование его в строку при передаче в атрибут данных вызова ajax.
источник
Кто-нибудь еще заметил, что строка / объект json недействительны во всех ответах, кроме Дэвида Хедлунда? :)
Объекты JSON должны быть отформатированы следующим образом: {"key": ("value" | 0 | false)}. Кроме того, для записи его в виде строки требуется гораздо меньше, чем преобразование объекта в строку ...
источник
источник
Просто добавьте [Эта строка отлично работает в Asp.net и найдите поля веб-управления в jason Eg: <% Fieldname%>]
источник
источник
Все дело в данных, которые вы передаете; должна правильно отформатированная строка. Если вы передаете пустые данные, данные: {} будут работать. Однако с несколькими параметрами он должен быть правильно отформатирован, например
....
данные: dataParam
...
Лучший способ понять это - иметь обработчик ошибок с правильным параметром сообщения, чтобы знать подробные ошибки.
источник
Я успешно передал несколько параметров с помощью json
источник