Jak mam przekazywać wartości ciągu zapytania w żądaniu Ajax jQuery? Obecnie wykonuję je w następujący sposób, ale jestem pewien, że istnieje czystszy sposób, który nie wymaga ode mnie ręcznego kodowania.
$.ajax({
url: "ajax.aspx?ajaxid=4&UserID=" + UserID + "&EmailAddress=" + encodeURIComponent(EmailAddress),
success: function(response) {
//Do Something
},
error: function(xhr) {
//Do Something to handle error
}
});
Widziałem przykłady, w których parametry ciągu zapytania są przekazywane jako tablica, ale te przykłady, które widziałem, nie używają $.ajax()
modelu, zamiast tego idą prosto do $.get()
. Na przykład:
$.get("ajax.aspx", { UserID: UserID , EmailAddress: EmailAddress } );
Wolę używać formatu $ .ajax (), ponieważ jestem do tego przyzwyczajony (bez szczególnie dobrego powodu - tylko osobiste preferencje).
Edytuj 09.04.2013:
Po tym, jak moje pytanie zostało zamknięte (jako „Too Localized”), znalazłem powiązane (identyczne) pytanie - z nie mniejszymi 3 opiniami (Moje złe, że go nie znalazłem):
Używając jquery do wykonania testu POST, jak poprawnie podać parametr „data”?
To doskonale odpowiedziało na moje pytanie, stwierdziłem, że zrobienie tego w ten sposób jest znacznie łatwiejsze do odczytania i nie muszę ręcznie używać encodeURIComponent()
w adresie URL lub wartości DANYCH (co znalazłem niejasne w odpowiedzi Bipen). Jest tak, ponieważ data
wartość jest kodowana automatycznie przez $.param()
). Na wszelki wypadek może to być przydatne dla kogokolwiek innego, oto przykład z którym poszedłem:
$.ajax({
url: "ajax.aspx?ajaxid=4",
data: {
"VarA": VarA,
"VarB": VarB,
"VarC": VarC
},
cache: false,
type: "POST",
success: function(response) {
},
error: function(xhr) {
}
});
źródło
Odpowiedzi:
Użyj opcji danych ajax. Możesz wysłać obiekt danych do serwera za pomocą
data
opcji w ajax itype
która określa sposób wysyłania go (alboPOST
alboGET
). Domyślnym typem jestGET
metodaSpróbuj tego
I możesz uzyskać dane przez (jeśli używasz PHP)
W aspx uważam, że jest (może być źle)
źródło
encodeURIComponent
. jquery zrobi to za ciebie.data:$.param({ajaxid: 4, UserID: UserID, EmailAddress: EmailAddress})
zamiastdata: { ajaxid: 4, UserID: UserID, EmailAddress: EmailAddress }
Umieść swoje parametry w
data
częściajax
połączenia. Zobacz dokumenty . Tak jak:źródło
Oto składnia przy użyciu jQuery
$.get
W twoim przypadku oznaczałoby to,
Uwaga
$.get
nie daje możliwości ustawienia procedury obsługi błędów. Ale istnieje kilka sposobów, aby to zrobić albo z użyciem $ .ajaxSetup () , $ .ajaxError () lub łańcuchowym.fail
na własną$.get
jak poniżejPrzyczyną ustawienia typu danych jako „jsonp” są problemy związane z tymi samymi zasadami przeglądarki, ale jeśli wysyłasz żądanie w tej samej domenie, w której hostowany jest skrypt javascript, powinieneś mieć ustawiony typ danych na
json
.Jeśli nie chcesz korzystać z jQuery
$.get
następnie zobaczyć docs na$.ajax
co pozwala na większą elastyczność pokójźródło
Spróbuj dodać to:
W zależności od oczekiwanego typu danych można przypisać
html, json, script, xml
źródło
ID
) przed przekazaniem jej jako parametru? Muszę Q w SO stackoverflow.com/questions/41192531/... . Postępowałem znacznie dalej w tym Q, gdzie teraz wywołuję okno dialogowe jquery i wywołuję ajax, aby pobrać dane z mysql. Brakuje mi linku, w jaki sposób uzyskać unikalny identyfikator powiązany z każdym kliknięciem punktu danych . Doceń, jeśli możesz mi pomóc. DziękujęWłaściwość data umożliwia wysłanie ciągu. Na kodzie serwera zaakceptuj go jako ciąg znaków o nazwie „myVar”, a następnie możesz go przeanalizować.
źródło
stringify
?ajax
Wdrożenie jQuery dba o to za Ciebie.Miałem ten sam problem, który określiłem,
data
ale przeglądarka wysyła żądania na adres URL kończący się na[Object object]
.Powinieneś był
processData
ustawićtrue
.źródło
Możesz użyć
$.ajax()
, a jeśli nie chcesz wstawiać parametrów bezpośrednio do adresu URL, użyjdata:
. To jest dołączane do adresu URLŹródło: http://api.jquery.com/jQuery.ajax/
źródło
Parametr danych metody ajax pozwala na wysyłanie danych po stronie serwera. Po stronie serwera można zażądać danych. Zobacz kod
Po stronie serwera otrzymaj go za pomocą zmiennej $ _GET.
źródło