jQuery wysyła ciąg jako parametry POST

98

Chcę wysłać ciąg jako parametr ajax Post.

Poniższy kod:

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

Nie działa. Czemu?

Mirgorod
źródło
2
Widzę, że jesteś programistą PHP i widzę też, że zrobiłeś to: ca$libri=no$libri. Sprawdzam tylko, żeby się upewnić ... czy na pewno nie próbujesz przypadkowo użyć konstrukcji PHP tam, gdzie powinny być konstrukcje JS? Jeśli chcesz dołączyć wartość $librizmiennej do tego łańcucha, spróbuj tego: 'foo=bar&ca' + $libri + '=no' + $libri.
treeface
nono :) Rozumiem wszystkie momenty generowania js przez php :) to nazwy zmiennych ajax w APS. Tworzę parser, który analizuje jakąś witrynę z AJAX. A teraz mam dlaczego błąd. To zapytanie crossdomain coz. Najpierw muszę utworzyć zapytanie na mój serwer :)
Mirgorod

Odpowiedzi:

182

Spróbuj tak:

$.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);
    }
});
Darin Dimitrov
źródło
1
czy nie powinno to być data: {foo: 'bar'}, bez apostrofu '?
Marius Stănescu
6
@MariusStanescu, oba są równoważną składnią javascript.
Darin Dimitrov
3
jestem też całkiem pewien, że $ w ca $ libri jest w porządku
Michael Crook
Nie odpowiada na pytanie dotyczące wysyłania jako string :(, patrz odpowiedź poniżej.
Andrew
To działa, ale to nie działa: foo: 'bar'. Spędziłem 2 dni bez powodu, nie dodałem znaków ze sznurków po obu stronach !!!
Eugen Sunic
39
$.ajax({
    type: 'POST',    
    url:'http://nakolesah.ru/',
    data:'foo='+ bar+'&calibri='+ nolibri,
    success: function(msg){
        alert('wow' + msg);
    }
});
Chakavak Behzad
źródło
15
dlatego przyjechałem tutaj, aby dowiedzieć się, jak wysłać dane $ .post jako ciąg. przyjęta odpowiedź wcale mi w tym nie pomaga. Dziękuję Ci.
chiliNUT,
Zgoda, miałem również sytuację, w której do ram, które tworzyłem, potrzebny był napis, dobra odpowiedź. W mojej sytuacji udało mi się to wykonać, umieszczając ciąg w zmiennej obok danych :, format mojego ciągu to '? Var = value & var2 = value2'
Joseph Astrahan
13

Widzę, że nie zrozumieli twojego pytania. Odpowiedź brzmi: dodaj „tradycyjny” parametr do wywołania Ajax w następujący sposób:

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

I będzie działać z parametrami PRZEKAZANO JAKO STRING.

vitaly goji
źródło
Dzięki! To ratuje mój dzień!
Dat TT
11

W przypadku podobnej aplikacji musiałem owinąć mój dataobiekt w JSON.stringify()ten sposób:

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

Interfejs API działał z klientem REST, ale nie mógł go uruchomić z jquery ajax w przeglądarce. Stringify było rozwiązaniem.

Dylan Valade
źródło
Dlaczego musieliśmy to zrobić?
Renoir Reis
Nie jestem pewien, ale niektóre znaki w odpowiedzi nie mogą być traktowane jako ciągi znaków, chyba że są wymuszone.
Dylan Valade,
4

Nie jestem pewien, czy jest to nadal aktualne… tylko dla przyszłych czytelników. Jeśli naprawdę chcesz przekazać swoje parametry jako część adresu URL, prawdopodobnie powinieneś użyć jQuery.param () .

egnarts-ms
źródło
1

Nie jest to bezpośrednia odpowiedź na twoje pytanie. Ale jedyną składnią, która kiedyś działała dla mnie, jest następująca:

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

Nazwa parametru jest zgodna z argumentem metody serwera

LCJ
źródło
1

Ja też stanąłem przed tym właśnie problemem. Ale mam rozwiązanie i zadziałało idealnie. Musiałem przekazać parametry, które są już produkowane przez funkcję javascript. Więc poniższy kod działa dla mnie. Użyłem ColdFusion jako zaplecza. Po prostu bezpośrednio użyłem parametrów jako zmiennej.

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

Miałem problem z przekazywaniem wartości ciągu do parametrów ciągu w Ajax. Po tylu googlach wymyśliłem niestandardowe rozwiązanie, jak poniżej.

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

Tutaj, bar i calibri są dwiema zmiennymi łańcuchowymi i możesz przekazać dowolną wartość ciągu do odpowiednich parametrów ciągu w metodzie sieciowej.

Sohel Pathan
źródło