Eu tenho o seguinte código jquery para chamar um webmethod em uma página aspx
$.ajax({
type: "POST",
url: "popup.aspx/GetJewellerAssets",
contentType: "application/json; charset=utf-8",
data: '{"jewellerId":' + filter + '}',
dataType: "json",
success: AjaxSucceeded,
error: AjaxFailed
});
e aqui está a assinatura do método da web
[WebMethod]
public static string GetJewellerAssets(int jewellerId)
{
Isso funciona bem.
Mas agora preciso que dois parâmetros sejam passados para o método da web
o novo método da web se parece com este
[WebMethod]
public static string GetJewellerAssets(int jewellerId, string locale)
{
}
Como altero o código do cliente para chamar com êxito essa nova assinatura de método?
EDITAR:
As 2 sintaxes a seguir funcionaram
data: '{ "jewellerId":' + filter + ', "locale":"en" }',
e
data: JSON.stringify({ jewellerId: filter, locale: locale }),
onde filtro e local são variáveis locais
data: JSON.stringify({ jewellerId: filter, locale: locale })
é a melhor maneira que eu encontrei, obrigado @ChrisCaJSON.stringify
com um literal de objeto, você DEVE incluir o nome do parâmetro com dois pontos, todos colocados entre{}
colchetes. UsarJSON.stringify(objectLiteral)
não funciona.[WebMethod] [ScriptMethod(UseHttpGet = true)] public static string TestIBAN(string ccc)
?Respostas:
Não use concatenação de string para passar parâmetros, apenas use um hash de dados:
ATUALIZAR:
Conforme sugerido por @Alex na seção de comentários, um ASP.NET PageMethod espera que os parâmetros sejam codificados em JSON na solicitação, portanto,
JSON.stringify
devem ser aplicados no hash de dados:fonte
JSON.stringify( myObject )
para criar uma string JSON a partir de um objeto javascript, caso queira agrupar seus parâmetros em uma classe posteriormente.fonte
simplesmente adicione quantas propriedades forem necessárias ao objeto de dados.
fonte
data
lado do servidor?NÃO use o método abaixo para enviar os dados usando uma chamada ajax
Se, por engano, o usuário inserir um caractere especial, como aspas simples ou aspas duplas, a chamada ajax falhará devido à string errada.
Use o método abaixo para chamar o serviço da Web sem qualquer problema
No parâmetro acima está o nome do objeto javascript e stringify-o ao passá-lo para o atributo data da chamada ajax.
fonte
Alguém mais notou que o objeto / string json é inválido em todas as respostas, exceto para David Hedlund? :)
Os objetos JSON devem ser formatados da seguinte maneira: {"key": ("value" | 0 | false)}. Além disso, escrevê-lo como uma string requer muito menos do que stringing o objeto ...
fonte
fonte
Apenas para adicionar [Esta linha funciona perfeitamente em Asp.net e encontra campos de controle da web em jason Ex .: <% Fieldname%>]
fonte
fonte
É tudo sobre os dados que você passa; tem uma string formatada corretamente. Se você estiver passando dados vazios, os dados: {} funcionarão. No entanto, com vários parâmetros, ele deve ser formatado corretamente, por exemplo
....
data: dataParam
...
A melhor maneira de entender é ter um manipulador de erros com o parâmetro de mensagem adequado, para saber os erros detalhados.
fonte
Passei com sucesso vários parâmetros usando json
fonte