web-dev-qa-db-fra.com

Chaîne d'envoi jQuery en tant que paramètres POST

Je veux envoyer une chaîne en tant que paramètre 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?

88
Mirgorod

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);
    }
});
171
Darin Dimitrov
$.ajax({
    type: 'POST',    
    url:'http://nakolesah.ru/',
    data:'foo='+ bar+'&calibri='+ nolibri,
    success: function(msg){
        alert('wow' + msg);
    }
});
35
Chakavak Behzad

Je vois qu'ils n'ont pas compris votre question. La réponse est: ajoutez le paramètre "traditionnel" à votre appel ajax comme ceci:

$.ajax({
  traditional: true,
  type: "POST",
  url: url,
  data: custom ,
  success: ok,
 dataType: "json"
});

Et cela fonctionnera avec les paramètres PASSED AS A STRING.

12
vitaly goji

Pour une application similaire, je devais envelopper mon objet data avec JSON.stringify() comme ceci:

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

L'API fonctionnait avec un client REST mais ne pouvait pas le faire fonctionner avec jquery ajax dans le navigateur. stringify était la solution.

9
Dylan Valade

Pas sûr que ce soit toujours d'actualité… juste pour les futurs lecteurs. Si vous voulez vraiment passer vos paramètres dans l'URL, vous devriez probablement utiliser jQuery.param () .

4
egnarts-ms

Pas une réponse directe à votre question .. Mais suivre est la seule syntaxe qui fonctionnait pour moi auparavant -

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

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

1
Lijo

J'ai également fait face à ce problème précis. Mais j'ai une solution et cela a fonctionné parfaitement. J'ai eu besoin de passer les paramètres qui sont déjà produits par la fonction javascript. Donc, le code ci-dessous fonctionne pour moi. J'ai utilisé ColdFusion pour le backend. Je viens d'utiliser directement les paramètres en tant que variable.

                    $.ajax({
                    url: "https://myexampleurl.com/myactionfile.cfm",
                    type: "POST",
                    data : {paramert1: variable1,parameter2: variable2},
                    success: function(data){
                        console.log(data);                              
                    } )};
0
CodeLover

Je faisais face au problème en passant la valeur de chaîne aux paramètres de chaîne dans Ajax. Après tant de recherches sur Google, je propose une solution personnalisée comme ci-dessous.

var bar = 'xyz';
var calibri = 'no$libri';

$.ajax({
   type: "POST",
   dataType: "json",
   contentType: "application/json; charset=utf-8",
   url: "http://nakolesah.ru/",
   data: '{ foo: \'' + bar + '\', Zoo: \'' + calibri + '\'}',
   success: function(msg){
       alert('wow'+msg);
   },
});

Ici, bar et calibre sont deux variables chaîne et vous pouvez transmettre n'importe quelle valeur chaîne aux paramètres de chaîne respectifs dans la méthode Web.

0
Sohel Pathan