jQuery mengirim string sebagai parameter POST

97

Saya ingin mengirim string sebagai parameter ajax Post.

Kode berikut:

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

Tidak bekerja. Mengapa?

Mirgorod
sumber
2
Saya melihat bahwa Anda adalah seorang pengembang PHP dan saya juga melihat bahwa Anda melakukan ini: ca$libri=no$libri. Hanya memeriksa untuk memastikan di sini ... apakah Anda yakin Anda tidak sengaja mencoba menggunakan konstruksi PHP yang seharusnya menggunakan JS? Jika Anda ingin memasukkan nilai dari $librivariabel ke dalam string ini, cobalah ini: 'foo=bar&ca' + $libri + '=no' + $libri.
permukaan pohon
bukan :) saya mengerti semua momen menghasilkan js oleh php :) itu nama variabel ajax di APS. Saya membuat parser yang mengurai beberapa situs dengan ajax. Dan sekarang saya mengerti mengapa kesalahan. Ini karena kueri lintasdomain. Saya harus membuat kueri terlebih dahulu ke server saya :)
Mirgorod

Jawaban:

181

Coba seperti ini:

$.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
sumber
1
bukankah seharusnya itu data: {foo: 'bar'}, tanpa apostrof '?
Marius Stănescu
6
@MariusStanescu, keduanya setara dengan sintaks javascript.
Darin Dimitrov
3
juga cukup yakin $ dalam ca $ libri baik
Michael Crook
Tidak menjawab pertanyaan tentang posting sebagai string :(, lihat jawaban di bawah.
Andrew
Ini berfungsi tetapi ini tidak: foo: 'bar'. Saya telah menghabiskan 2 hari tanpa sebab saya tidak menambahkan tanda string ke kedua sisi !!!
Eugen Sunic
39
$.ajax({
    type: 'POST',    
    url:'http://nakolesah.ru/',
    data:'foo='+ bar+'&calibri='+ nolibri,
    success: function(msg){
        alert('wow' + msg);
    }
});
Chakavak Behzad
sumber
15
inilah mengapa saya datang ke sini, untuk mencari tahu cara mengirim data $ .post sebagai string. jawaban yang diterima sama sekali tidak membantu saya dengan itu. Terima kasih.
cabaiNUT
Setuju, saya juga memiliki situasi di mana sebuah string diperlukan untuk kerangka kerja yang saya kembangkan, jawaban yang bagus. Dalam situasi saya, saya dapat membuat ini berfungsi dengan meletakkan string dalam variabel di sebelah data :, format string saya adalah '? Var = value & var2 = value2'
Joseph Astrahan
13

Saya melihat bahwa mereka tidak memahami pertanyaan Anda. Jawabannya adalah: tambahkan parameter "tradisional" ke panggilan ajax Anda seperti ini:

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

Dan itu akan bekerja dengan parameter PASSED AS A STRING.

vitaly goji
sumber
Terima kasih! Ini menyelamatkan hariku!
Dat TT
11

Untuk aplikasi serupa saya harus membungkus dataobjek saya dengan JSON.stringify()seperti ini:

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

API bekerja dengan klien REST tetapi tidak bisa berfungsi dengan jquery ajax di browser. stringify adalah solusinya.

Dylan Valade
sumber
Mengapa kami harus melakukan ini?
Renoir Reis
Tidak yakin tetapi beberapa karakter dalam respons tidak boleh dianggap sebagai string kecuali dipaksa.
Dylan Valade
4

Tidak yakin apakah ini masih aktual .. hanya untuk pembaca mendatang. Jika yang benar-benar Anda inginkan adalah meneruskan parameter Anda sebagai bagian dari URL, Anda mungkin harus menggunakan jQuery.param () .

egnarts-ms
sumber
1

Bukan jawaban langsung untuk pertanyaan Anda .. Tapi berikut ini adalah satu-satunya sintaks yang digunakan untuk bekerja untuk saya -

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

Dan nama parameter cocok dengan argumen metode server

LCJ
sumber
1

Saya juga menghadapi masalah ini. Tetapi saya sudah mendapat solusi dan itu bekerja dengan sempurna. Saya harus meneruskan parameter yang sudah dihasilkan oleh fungsi javascript. Jadi kode di bawah ini bekerja untuk saya. Saya menggunakan ColdFusion untuk backend. Saya hanya langsung menggunakan parameter sebagai variabel.

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

Saya menghadapi masalah dalam melewatkan nilai string ke parameter string di Ajax. Setelah begitu banyak googling, saya telah menemukan solusi khusus seperti di bawah ini.

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

Di sini, bar dan calibri adalah dua variabel string dan Anda dapat meneruskan nilai string apa pun ke parameter string masing-masing dalam metode web.

Sohel Pathan
sumber