jQuery, dizeyi POST parametreleri olarak gönderir


99

Bir ajax Post parametresi olarak bir string göndermek istiyorum.

Aşağıdaki kod:

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

Çalışmıyor. Neden?


2
Ben bir PHP geliştirici ve ben de bunu yaptığını görüyoruz görüyoruz: ca$libri=no$libri. Sadece burada emin olmak için kontrol ediyorum ... JS olanların olması gereken yerde yanlışlıkla PHP yapılarını kullanmaya çalışmadığınızdan emin misiniz? Eğer değerini eklemek istiyorsanız $libribu dizeye değişken, şunu deneyin: 'foo=bar&ca' + $libri + '=no' + $libri.
treeface

nono :) php ile js üretmenin tüm anlarını anlıyorum :) bu APS'deki ajax değişkenlerinin isimleri. Ajax ile bazı siteleri ayrıştıran ayrıştırıcı oluşturuyorum. Ve şimdi neden hata aldım. Coz crossdomain sorgusudur. Önce sunucuma sorgu oluşturmalıyım :)
Mirgorod

Yanıtlar:


183

Şöyle dene:

$.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
kesme işareti olmadan veri: {foo: 'bar'} olması gerekmez mi?
Marius Stănescu

6
@MariusStanescu, her ikisi de eşdeğer javascript sözdizimidir.
Darin Dimitrov

3
ayrıca ca $ libri'deki $ değerinin de gayet iyi olduğundan oldukça emin
Michael Crook

String olarak göndermeyle ilgili soruya cevap vermiyor :(, cevaba bakınız.
Andrew

Bu çalışır, ancak bu işe yaramaz: foo: 'bar'. 2 günümü nedensiz geçirdim, dizeleri her iki tarafa da eklemedim !!!
Eugen Sunic

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

15
bu yüzden buraya $ .post verilerinin dizgi olarak nasıl gönderileceğini öğrenmek için geldim. kabul edilen cevap bu konuda bana hiç yardımcı olmuyor. teşekkür ederim.
chiliNUT

Kabul ettim, geliştirmekte olduğum bir çerçeve için bir dizgeye ihtiyaç duyulan bir durum vardı, iyi yanıt. Benim durumda ben verinin yanında bir değişkene karakterlerini koyun bu işi yapmak başardı :, benim dizesinin biçimi oldu 'var = değer & var2 = değer2?'
Joseph Astrahan

13

Sorunuzu anlamadıklarını görüyorum. Cevap: ajax çağrınıza "geleneksel" parametreyi şu şekilde ekleyin:

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

Ve STRING OLARAK GEÇERLİ parametrelerle çalışacaktır.


Teşekkürler! Bu günümü kurtarıyor!
Dat TT

11

Benzer bir uygulama için benim sarmak zorunda datanesneyi JSON.stringify()böyle:

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

API bir REST istemcisiyle çalışıyordu, ancak tarayıcıda jquery ajax ile çalışmasını sağlayamıyordu. stringify çözümdü.


Bunu neden yapmak zorundaydık?
Renoir Reis

Emin değilim, ancak yanıttaki bazı karakterler zorunlu olmadıkça dizge olarak değerlendirilmemelidir.
Dylan Valade

4

Bunun hala geçerli olup olmadığından emin değilim .. sadece gelecekteki okuyucular için. Gerçekten istediğiniz şey parametrelerinizi URL'nin bir parçası olarak iletmekse , muhtemelen jQuery.param () kullanmalısınız .


1

Sorunuza doğrudan bir cevap değil .. Ama benim için işe yarayan tek sözdizimi şudur -

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

Ve parametre-adı, sunucu yönteminin bağımsız değişkeniyle eşleşir


1

Ben de bu problemle karşılaştım. Ama bir çözümüm var ve mükemmel çalıştı. Javascript işlevi tarafından zaten üretilmiş olan parametreleri geçirmem gerekiyor. Bu yüzden aşağıdaki kod benim için çalışıyor. Arka uç için ColdFusion kullandım . Parametreleri doğrudan değişken olarak kullandım.

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

0

Ajax'ta dize değerini dize parametrelerine geçirirken sorunla karşılaşıyordum. Bu kadar çok googling yaptıktan sonra, aşağıdaki gibi özel bir çözüm buldum.

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

Burada, bar ve calibri iki dize değişkenidir ve web yönteminde ilgili dize parametrelerine istediğiniz dize değerini iletebilirsiniz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.