106 votes

jQuery envoie une chaîne de caractères comme paramètres POST

Je veux envoyer une chaîne de caractères comme paramètre de post ajax.

Le code suivant :

$.ajax({
   type: "POST",
   url: "http://nakolesah.ru/",
   data: 'foo=bar&ca$libri=no$libri',
   success: function(msg){
     alert('wow'+msg);
   }
});

Ne fonctionne pas. Pourquoi ?

2 votes

Je vois que vous êtes un développeur PHP et je vois aussi que vous avez fait cela : ca$libri=no$libri . Je vérifie juste pour être sûr... êtes-vous sûr que vous n'essayez pas accidentellement d'utiliser des constructions PHP là où il faudrait des constructions JS ? Si vous voulez inclure la valeur de l'élément $libri dans cette chaîne, essayez ceci : 'foo=bar&ca' + $libri + '=no' + $libri .

0 votes

Nono :) je comprends tous les moments de la génération de js par php :) c'est les noms des variables ajax dans APS. Je crée un parser qui analyse un site avec ajax. Et maintenant j'ai une erreur. C'est à cause de la requête crossdomain. Je dois d'abord créer une requête sur mon serveur :)

192voto

Darin Dimitrov Points 528142

Essayez comme ça :

$.ajax({
    type: 'POST',
    // make sure you respect the same origin policy with this url:
    // http://en.wikipedia.org/wiki/Same_origin_policy
    url: 'http://nakolesah.ru/',
    data: { 
        'foo': 'bar', 
        'ca$libri': 'no$libri' // <-- the $ sign in the parameter name seems unusual, I would avoid it
    },
    success: function(msg){
        alert('wow' + msg);
    }
});

1 votes

Ça ne devrait pas être data : { foo : 'bar' }, sans l'apostrophe ' ?

6 votes

@MariusStanescu, les deux sont des syntaxes javascript équivalentes.

3 votes

Je suis également certain que le $ dans le ca$libri est parfaitement correct.

43voto

Chakavak Behzad Points 180
$.ajax({
    type: 'POST',    
    url:'http://nakolesah.ru/',
    data:'foo='+ bar+'&calibri='+ nolibri,
    success: function(msg){
        alert('wow' + msg);
    }
});

16 votes

C'est pourquoi je suis venu ici, pour trouver comment envoyer les données $.post sous forme de chaîne de caractères. la réponse acceptée ne m'aide pas du tout à ce sujet. merci.

0 votes

Je suis d'accord, j'ai également eu une situation où une chaîne de caractères était nécessaire pour un cadre que je développais, bonne réponse. Dans mon cas, j'ai pu faire fonctionner le système en plaçant la chaîne dans une variable à côté de data :, le format de ma chaîne était '?var=value&var2=value2'.

12voto

Dylan Valade Points 2529

Pour une application similaire, j'ai dû envelopper mon data avec JSON.stringify() comme ça :

data: JSON.stringify({ 
  'foo': 'bar', 
  'ca$libri': 'no$libri'
}),

L'API fonctionnait avec un client REST mais il était impossible de la faire fonctionner avec jquery ajax dans le navigateur. stringify était la solution.

0 votes

Pourquoi avons-nous dû faire ça ?

0 votes

Je ne suis pas sûr, mais certains caractères de la réponse ne doivent pas être considérés comme des chaînes de caractères, sauf s'ils sont forcés.

4voto

egnarts-ms Points 71

Je ne suis pas sûr que cela soit toujours d'actualité juste pour les futurs lecteurs. Si ce que vous voulez vraiment, c'est passer vos paramètres en tant que partie de l'URL, vous devriez probablement utiliser la méthode suivante jQuery.param() .

1voto

Lijo Points 4002

Ce n'est pas une réponse directe à votre question Mais la syntaxe suivante est la seule qui fonctionnait pour moi -

data: '{"winNumber": "' + win + '"}',

Et le nom du paramètre correspond à l'argument de la méthode du serveur.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X