Como devo transmitir valores de cadeia de consulta em uma solicitação do jQuery Ajax? Atualmente, eu os faço da seguinte maneira, mas tenho certeza de que existe uma maneira mais limpa que não exige que eu codifique manualmente.
$.ajax({
url: "ajax.aspx?ajaxid=4&UserID=" + UserID + "&EmailAddress=" + encodeURIComponent(EmailAddress),
success: function(response) {
//Do Something
},
error: function(xhr) {
//Do Something to handle error
}
});
Eu já vi exemplos em que os parâmetros da string de consulta são passados como uma matriz, mas esses exemplos que eu vi não usam o $.ajax()
modelo, em vez disso, eles vão direto para $.get()
. Por exemplo:
$.get("ajax.aspx", { UserID: UserID , EmailAddress: EmailAddress } );
Prefiro usar o formato $ .ajax (), pois é o que estou acostumado (sem uma razão particularmente boa - apenas uma preferência pessoal).
Editar 09/04/2013:
Depois que minha pergunta foi encerrada (como "Too Localized"), encontrei uma pergunta relacionada (idêntica) - com três votos positivos (meu pior por não encontrá-la em primeiro lugar):
Usando jquery para criar um POST, como fornecer corretamente o parâmetro 'data'?
Isso respondeu minha pergunta perfeitamente, e achei que fazê-lo dessa maneira é muito mais fácil de ler e não preciso usar manualmente encodeURIComponent()
os valores de URL ou DATA (que é o que eu achei incerto na resposta do bipen). Isso ocorre porque o data
valor é codificado automaticamente via $.param()
). Caso isso possa ser útil para qualquer outra pessoa, este é o exemplo com o qual eu fui:
$.ajax({
url: "ajax.aspx?ajaxid=4",
data: {
"VarA": VarA,
"VarB": VarB,
"VarC": VarC
},
cache: false,
type: "POST",
success: function(response) {
},
error: function(xhr) {
}
});
fonte
Respostas:
Use a opção de dados do ajax. Você pode enviar o objeto de dados para o servidor por
data
opção no ajax e otype
que define como você o está enviando (POST
ouGET
) O tipo padrão éGET
métodoTente isto
E você pode obter os dados (se você estiver usando PHP)
No aspx, acredito que seja (pode estar errado)
fonte
encodeURIComponent
. jquery fará isso por você.data:$.param({ajaxid: 4, UserID: UserID, EmailAddress: EmailAddress})
, em vez dedata: { ajaxid: 4, UserID: UserID, EmailAddress: EmailAddress }
Coloque seus parâmetros na
data
parte daajax
ligação. Veja os documentos . Igual a:fonte
Aqui está a sintaxe usando jQuery
$.get
Então, no seu caso, isso equivaleria a,
Nota
$.get
não oferece a oportunidade de definir um manipulador de erros. Mas existem várias maneiras de fazer isso usando $ .ajaxSetup () , $ .ajaxError () ou encadeando um.fail
no seu exemplo$.get
abaixoO motivo para definir o tipo de dados como 'jsonp' deve-se aos mesmos problemas de política de origem do navegador, mas se você estiver fazendo a solicitação no mesmo domínio em que seu javascript está hospedado, deverá concordar com o tipo de dados definido como
json
.Se você não quiser usar o jquery
$.get
, consulte os documentos para os$.ajax
quais há espaço para mais flexibilidadefonte
Tente adicionar isto:
Depende do tipo de dados esperado, você pode atribuir
html, json, script, xml
fonte
ID
) adiante antes de passá-la como parâmetro? Eu tenho Q no SO, stackoverflow.com/questions/41192531/… . Eu progredi neste Q muito mais longe, onde agora chamo uma caixa de diálogo jquery e chamo ajax para recuperar dados do mysql. Estou com falta do link sobre como recuperar o ID exclusivo associado a cada clique no ponto de dados . Aprecie se você pode me ajudar. ObrigadoA propriedade data permite enviar uma sequência. No código do lado do servidor, aceite-o como um nome de argumento de cadeia "myVar" e, em seguida, você poderá analisá-lo.
fonte
stringify
? Aajax
implementação do jQuery cuida disso para você.Tive o mesmo problema em que eu especifiquei,
data
mas o navegador estava enviando solicitações para o URL que terminava com[Object object]
.Você deveria ter
processData
definido comotrue
.fonte
Você pode usar o
$.ajax()
e, se não quiser colocar os parâmetros diretamente no URL, use odata:
. Que está anexado ao URLFonte: http://api.jquery.com/jQuery.ajax/
fonte
O parâmetro data do método ajax permite enviar dados para o lado do servidor.No lado do servidor, você pode solicitar os dados.
No lado do servidor, receba-o usando a variável $ _GET.
fonte