jQuery invia una stringa come parametri POST


97

Voglio inviare una stringa come parametro Ajax Post.

Il codice seguente:

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

Non funziona. Perché?


2
Vedo che sei uno sviluppatore PHP e vedo anche che avete fatto queste cose: ca$libri=no$libri. Sto solo controllando per essere sicuro qui ... sei sicuro di non provare accidentalmente a usare le costruzioni PHP dove dovrebbero essere quelle JS? Se si desidera includere il valore della $librivariabile in questa stringa, provate questo: 'foo=bar&ca' + $libri + '=no' + $libri.
treeface

nono :) capisco tutti i momenti della generazione di js da php :) sono i nomi delle variabili ajax in APS. Creo parser che analizza alcuni siti con ajax. E ora ho capito perché errore. È una query crossdomain. Devo creare prima una query sul mio server :)
Mirgorod

Risposte:


181

Prova in questo modo:

$.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
non dovrebbe essere data: {foo: 'bar'}, senza l'apostrofo '?
Marius Stănescu

6
@MariusStanescu, entrambi sono equivalenti alla sintassi javascript equivalente.
Darin Dimitrov

3
anche abbastanza sicuro che il $ nei ca $ libri vada benissimo
Michael Crook

Non risponde alla domanda riguardante la pubblicazione come stringa :(, vedi sotto la risposta.
Andrew

Funziona ma non funziona: foo: 'bar'. Ho trascorso 2 giorni senza motivo non ho aggiunto i segni delle corde su entrambi i lati !!!
Eugen Sunic

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

15
questo è il motivo per cui sono venuto qui, per scoprire come inviare i dati $ .post come stringa. la risposta accettata non mi aiuta affatto in questo. grazie.
chiliNUT

D'accordo, avevo anche una situazione in cui era richiesta una stringa per un framework che stavo sviluppando, buona risposta. Nella mia situazione sono stato in grado di farlo funzionare inserendo la stringa in una variabile accanto a data :, il formato della mia stringa era '? Var = value & var2 = value2'
Joseph Astrahan

13

Vedo che non hanno capito la tua domanda. La risposta è: aggiungi il parametro "tradizionale" alla tua chiamata ajax in questo modo:

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

E funzionerà con i parametri PASSED AS A STRING.


Grazie! Questo mi salva la giornata!
Dat TT

11

Per un'applicazione simile ho dovuto avvolgere il mio dataoggetto in JSON.stringify()questo modo:

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

L'API stava funzionando con un client REST ma non riusciva a farlo funzionare con jquery ajax nel browser. stringificare era la soluzione.


Perché abbiamo dovuto farlo?
Renoir Reis

Non sono sicuro, ma alcuni caratteri nella risposta non devono essere considerati stringhe a meno che non siano forzati.
Dylan Valade

4

Non sono sicuro che sia ancora attuale .. solo per i futuri lettori. Se quello che vuoi veramente è passare i tuoi parametri come parte dell'URL, dovresti probabilmente usare jQuery.param () .


1

Non una risposta diretta alla tua domanda .. Ma la seguente è l'unica sintassi che funzionava per me:

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

E il nome del parametro corrisponde all'argomento del metodo server


1

Ho anche affrontato questo problema esatto. Ma ho una soluzione e ha funzionato perfettamente. Ho bisogno di passare i parametri che sono già prodotti dalla funzione javascript. Quindi il codice seguente funziona per me. Ho usato ColdFusion per il backend. Ho usato direttamente i parametri come una variabile.

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

0

Stavo affrontando il problema nel passare il valore della stringa ai parametri della stringa in Ajax. Dopo tante ricerche su Google, ho trovato una soluzione personalizzata come di seguito.

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);
   },
});

Qui, bar e calibri sono due variabili di stringa e puoi passare qualsiasi valore di stringa ai rispettivi parametri di stringa nel metodo web.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.