Comment dois-je transmettre les valeurs de chaîne de requête dans une requête Ajax jQuery? Je les fais actuellement comme suit, mais je suis sûr qu'il existe une méthode plus propre qui n'exige pas que je code 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 n’utilisent pas le modèle $.ajax()
, mais passent directement à $.get()
. Par exemple:
$.get("ajax.aspx", { UserID: UserID , EmailAddress: EmailAddress } );
Je préfère utiliser le format $ .ajax () car c’est ce à quoi je suis habitué (pas de raison particulière - une préférence personnelle).
Edit 09/04/2013:
Après que ma question ait été fermée (en tant que "Too Localized"), j'ai trouvé une question connexe (identique) - avec 3 votes positifs non-moins (My bad pour ne pas l'avoir trouvée en premier lieu):
Utilisation de jQuery pour faire un POST, comment fournir correctement le paramètre «données»?
Cela répondait parfaitement à ma question. Je trouvais que le faire de cette façon était beaucoup plus facile à lire et je n’avais pas besoin d’utiliser manuellement encodeURIComponent()
dans l’URL ou les valeurs de DONNÉES (ce que j’ai trouvé peu clair dans la réponse de bipen). En effet, la valeur data
est codé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) {
}
});
Utiliser l'option de données de ajax. Vous pouvez envoyer un objet de données au serveur à l'aide de l'option data
dans ajax et de la variable type
qui définit la méthode d'envoi (POST
ou GET
). Le type par défaut est GET
méthode
Essaye ça
$.ajax({
url: "ajax.aspx",
type: "get", //send it through get method
data: {
ajaxid: 4,
UserID: UserID,
EmailAddress: EmailAddress
},
success: function(response) {
//Do Something
},
error: function(xhr) {
//Do Something to handle error
}
});
Et vous pouvez obtenir les données par (si vous utilisez PHP)
$_GET['ajaxid'] //gives 4
$_GET['UserID'] //gives you the sent userid
En aspx, je crois que c'est (peut être faux)
Request.QueryString["ajaxid"].ToString();
Placez vos paramètres dans la partie data
de l'appel ajax
. Voir les docs . Ainsi:
$.ajax({
url: "/TestPage.aspx",
data: {"first": "Manu","Last":"Sharma"},
success: function(response) {
//Do Something
},
error: function(xhr) {
//Do Something to handle error
}
});
Voici la syntaxe utilisant jQuery $.get
$.get(url, data, successCallback, datatype)
Donc, dans votre cas, cela équivaudrait à
var url = 'ajax.asp';
var data = { ajaxid: 4, UserID: UserID, EmailAddress: EmailAddress };
var datatype = 'jsonp';
function success(response) {
// do something here
}
$.get('ajax.aspx', data, success, datatype)
Remarque$.get
ne vous donne pas la possibilité de définir un gestionnaire d'erreurs. Mais il y a plusieurs façons de le faire en utilisant $ .ajaxSetup () , $ .ajaxError () ou en chaînant un .fail
sur votre $.get
comme ci-dessous
$.get(url, data, success, datatype)
.fail(function(){
})
La raison pour laquelle le type de données a été défini sur 'jsonp' est due aux mêmes problèmes de stratégie Origin, mais si vous faites la demande sur le même domaine que votre javascript, le type de données doit être défini sur json
.
Si vous ne souhaitez pas utiliser le code jquery $.get
, alors reportez-vous à la documentation pour $.ajax
, ce qui vous laisse davantage de flexibilité.
Essayez d'ajouter ceci:
$.ajax({
url: "ajax.aspx",
type:'get',
data: {ajaxid:4, UserID: UserID , EmailAddress: encodeURIComponent(EmailAddress)},
dataType: 'json',
success: function(response) {
//Do Something
},
error: function(xhr) {
//Do Something to handle error
}
});
Dépend du type de données attendu, vous pouvez affecter html, json, script, xml
.
La propriété data vous permet d'envoyer une chaîne. Sur le code côté serveur, acceptez-le en tant qu'argument de chaîne nommé "myVar" et vous pourrez ensuite l'analyser.
$.ajax({
url: "ajax.aspx",
data: [myVar = {id: 4, email: 'emailaddress', myArray: [1, 2, 3]}];
success: function(response) {
//Do Something
},
error: function(xhr) {
//Do Something to handle error
}
});
Vous pouvez utiliser $.ajax()
et si vous ne voulez pas placer les paramètres directement dans l'URL, utilisez data:
C'est ajouté à l'URL
Avait le même problème où j'ai spécifié data
mais le navigateur envoyait des demandes à l'URL se terminant par [Object object]
processData
doit être défini sur true
.
processData: true, // You should comment this out if is false or set to true