Wie soll ich Abfragezeichenfolgenwerte in einer jQuery Ajax-Anforderung übergeben? Ich mache sie derzeit wie folgt, aber ich bin sicher, dass es einen saubereren Weg gibt, bei dem ich nicht manuell codieren muss.
$.ajax({
url: "ajax.aspx?ajaxid=4&UserID=" + UserID + "&EmailAddress=" + encodeURIComponent(EmailAddress),
success: function(response) {
//Do Something
},
error: function(xhr) {
//Do Something to handle error
}
});
Ich habe Beispiele gesehen, in denen Abfragezeichenfolgenparameter als Array übergeben werden, aber diese Beispiele, die ich gesehen habe, verwenden nicht das $.ajax()
Modell, sondern gehen direkt zu $.get()
. Beispielsweise:
$.get("ajax.aspx", { UserID: UserID , EmailAddress: EmailAddress } );
Ich bevorzuge das Format $ .ajax (), wie ich es gewohnt bin (kein besonders guter Grund - nur eine persönliche Präferenz).
Bearbeiten 09/04/2013:
Nachdem meine Frage geschlossen wurde (als "Too Localized"), fand ich eine verwandte (identische) Frage - mit nicht weniger als 3 Upvotes (mein schlechtes, weil ich sie überhaupt nicht gefunden habe):
Wie kann man mit jquery einen POST erstellen und den Parameter 'data' richtig angeben?
Dies beantwortete meine Frage perfekt. Ich fand, dass es viel einfacher zu lesen ist und ich es nicht manuell encodeURIComponent()
in der URL oder den DATA-Werten verwenden muss (was ich in der Antwort von bipen als unklar empfunden habe). Dies liegt daran, dass der data
Wert automatisch über codiert wird $.param()
. Nur für den Fall, dass dies für andere von Nutzen sein kann, ist dies das Beispiel, mit dem ich gegangen bin:
$.ajax({
url: "ajax.aspx?ajaxid=4",
data: {
"VarA": VarA,
"VarB": VarB,
"VarC": VarC
},
cache: false,
type: "POST",
success: function(response) {
},
error: function(xhr) {
}
});
quelle
Antworten:
Verwenden Sie die Datenoption von Ajax. Sie können das Datenobjekt per
data
Option in Ajax an den Server senden. Dabei wirdtype
festgelegt, wie Sie es senden (entwederPOST
oderGET
). Der Standardtyp istGET
methodVersuche dies
Und Sie können die Daten erhalten von (wenn Sie PHP verwenden)
In aspx glaube ich, dass es ist (könnte falsch sein)
quelle
encodeURIComponent
. jquery erledigt das für Sie.data:$.param({ajaxid: 4, UserID: UserID, EmailAddress: EmailAddress})
anstelle vondata: { ajaxid: 4, UserID: UserID, EmailAddress: EmailAddress }
Fügen Sie Ihre Parameter in den
data
Teil desajax
Anrufs ein. Siehe die Dokumente . Wie so:quelle
Hier ist die Syntax mit jQuery
$.get
In Ihrem Fall wäre das also gleichbedeutend mit:
Hinweis
$.get
bietet Ihnen nicht die Möglichkeit, einen Fehlerbehandler festzulegen. Aber es gibt mehr Möglichkeiten , um es entweder mit tun $ .ajaxSetup () , $ .ajaxError () oder einem Verkettungs.fail
auf$.get
wie untenDer Grund für das Festlegen des Datentyps als "jsonp" liegt in Problemen mit der gleichen Ursprungsrichtlinie des Browsers. Wenn Sie die Anforderung jedoch in derselben Domäne stellen, in der Ihr Javascript gehostet wird, sollte der Datentyp auf "OK" eingestellt sein
json
.Wenn Sie die jquery nicht verwenden mögen , um
$.get
dann die Dokumentation sieht für$.ajax
den Raum für mehr Flexibilität erlaubtquelle
Versuchen Sie Folgendes hinzuzufügen:
Abhängig davon, welcher Datentyp erwartet wird, können Sie ihn zuweisen
html, json, script, xml
quelle
ID
) definieren können, bevor Sie sie als Parameter übergeben? Ich habe Q auf SO, stackoverflow.com/questions/41192531/… . Ich habe dieses Q viel weiter vorangetrieben, wo ich jetzt einen Abfragedialog aufrufe und Ajax aufrufe, um Daten von MySQL abzurufen. Mir fehlt der Link zum Abrufen der eindeutigen ID, die jedem Datenpunktklick zugeordnet ist . Schätzen Sie, wenn Sie mir helfen können. Vielen DankMit der Eigenschaft data können Sie eine Zeichenfolge senden. Akzeptieren Sie Ihren serverseitigen Code als String-Argumentnamen "myVar", und Sie können ihn dann analysieren.
quelle
stringify
? Dieajax
Implementierung von jQuery erledigt das für Sie.Hatte das gleiche Problem, wo ich angegeben habe,
data
aber der Browser hat Anfragen an die URL gesendet, die mit endet[Object object]
.Du hättest
processData
einstellen sollentrue
.quelle
Sie können das verwenden
$.ajax()
, und wenn Sie die Parameter nicht direkt in die URL einfügen möchten, verwenden Sie dasdata:
. Das ist an die URL angehängtQuelle: http://api.jquery.com/jQuery.ajax/
quelle
Mit dem Datenparameter der Ajax-Methode können Sie Daten an den Server senden. Auf der Serverseite können Sie die Daten anfordern. Siehe Code
Auf der Serverseite erhalten Sie es mit der Variablen $ _GET.
quelle