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?


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

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

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.


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.


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 () .


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


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

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.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.