Comment dois-je transmettre des valeurs de chaîne de requête dans une demande jQuery Ajax? Je les fais actuellement comme suit, mais je suis sûr qu'il existe un moyen plus propre qui ne nécessite pas que j'encode manuellement.
$.ajax({
url: "ajax.aspx?ajaxid=4&UserID=" + UserID + "&EmailAddress=" + encodeURIComponent(EmailAddress),
success: function(response) {
//Do Something
},
error: function(xhr) {
//Do Something to handle error
}
});
J'ai vu des exemples où les paramètres de chaîne de requête sont passés sous forme de tableau, mais ces exemples que j'ai vus n'utilisent pas le $.ajax()
modèle, au lieu de cela, ils vont directement $.get()
. Par exemple:
$.get("ajax.aspx", { UserID: UserID , EmailAddress: EmailAddress } );
Je préfère utiliser le format $ .ajax () car c'est à cela que je suis habitué (pas de raison particulièrement bonne - juste une préférence personnelle).
Modifier 09/04/2013:
Après que ma question a été fermée (comme "Trop localisée"), j'ai trouvé une question connexe (identique) - avec 3 votes positifs non moins (mon mal de ne pas l'avoir trouvée en premier lieu):
En utilisant jquery pour créer un POST, comment fournir correctement le paramètre 'data'?
Cela a répondu parfaitement à ma question, j'ai trouvé que le faire de cette façon est beaucoup plus facile à lire et je n'ai pas besoin d'utiliser manuellement encodeURIComponent()
dans l'URL ou les valeurs DATA (ce que j'ai trouvé peu clair dans la réponse de bipen). En effet, la data
valeur est encodée automatiquement via $.param()
). Juste au cas où cela pourrait être utile à quelqu'un d'autre, voici l'exemple avec lequel je suis allé:
$.ajax({
url: "ajax.aspx?ajaxid=4",
data: {
"VarA": VarA,
"VarB": VarB,
"VarC": VarC
},
cache: false,
type: "POST",
success: function(response) {
},
error: function(xhr) {
}
});
la source
Réponses:
Utilisez l'option de données d'ajax. Vous pouvez envoyer un objet de données au serveur par
data
option dans ajax ettype
qui définit comment vous l'envoyez (soitPOST
ouGET
). Le type par défaut estGET
méthodeEssaye ça
Et vous pouvez obtenir les données par (si vous utilisez PHP)
En aspx, je crois que c'est (peut-être faux)
la source
encodeURIComponent
. jquery le fera pour vous.data:$.param({ajaxid: 4, UserID: UserID, EmailAddress: EmailAddress})
, au lieu dedata: { ajaxid: 4, UserID: UserID, EmailAddress: EmailAddress }
Mettez vos params dans la
data
partie de l'ajax
appel. Voir les documents . Ainsi:la source
Voici la syntaxe utilisant jQuery
$.get
Donc, dans votre cas, cela équivaudrait à,
Remarque
$.get
ne vous donne pas la possibilité de définir un gestionnaire d'erreurs. Mais il existe plusieurs façons de le faire en utilisant $ .ajaxSetup () , $ .ajaxError () ou en enchaînant un.fail
sur votre$.get
comme ci-dessousLa raison pour laquelle le type de données est défini sur `` jsonp '' est due aux mêmes problèmes de stratégie d'origine du navigateur, mais si vous effectuez la demande sur le même domaine où votre javascript est hébergé, vous devriez être d'accord avec le type de données défini sur
json
.Si vous ne voulez pas utiliser le jquery
$.get
alors voir la documentation pour ce$.ajax
qui laisse de la place pour plus de flexibilitéla source
Essayez d'ajouter ceci:
Dépend du type de données attendu, vous pouvez attribuer
html, json, script, xml
la source
ID
) avant de la passer en paramètre? J'ai Q sur SO, stackoverflow.com/questions/41192531/… . J'ai progressé sur ce Q beaucoup plus loin, où maintenant j'appelle une boîte de dialogue jquery et j'appelle ajax pour récupérer les données de mysql. Il me manque le lien sur la façon de récupérer l'ID unique associé à chaque clic de point de données . Appréciez si vous pouvez m'aider. MerciLa propriété data vous permet d'envoyer une chaîne. Sur votre code côté serveur, acceptez-le comme un nom d'argument de chaîne "myVar" et vous pourrez ensuite l'analyser.
la source
stringify
? L'ajax
implémentation de jQuery s'en charge pour vous.J'ai eu le même problème que celui que j'ai spécifié
data
mais le navigateur envoyait des demandes à l'URL se terminant par[Object object]
.Vous auriez dû vous
processData
mettre àtrue
.la source
Vous pouvez utiliser le
$.ajax()
, et si vous ne voulez pas placer les paramètres directement dans l'URL, utilisez ledata:
. Qui est ajouté à l'URLSource: http://api.jquery.com/jQuery.ajax/
la source
Le paramètre data de la méthode ajax vous permet d'envoyer des données côté serveur.Sur le serveur, vous pouvez demander les données.Voir le code
Côté serveur, recevez-le en utilisant la variable $ _GET.
la source