2010-11-23 16 views
10

aracılığıyla nesneyi geçmesi ve bu nesneyi posta isteğinin bir parçası olarak iletin.javascript ben bu</p> <p>var gibi görünen bir nesne nesne = {: true, p2: true, p3 yanlış p1} gelmiş yazı

ancak diğer ucunda (php) alıyorum hepsi

[object Object]

nasıl posta yoluyla bir nesne gönderebilir?

temelde benim yapmaya çalışıyorum ben gizli ve gizli bir forma parçasıdır yüzden

<input id="obj" type="hidden" name="obj[]">

gibi oluşturulur bir giriş var

olduğunu. Bir düğmeye basıldığında

Ben bir dinamik olarak oluşturulan dosyayı indirmek için olduğu gibi bunu bu şekilde gerektiği gibi

$(#obj).val(obj); 
$('form').submit(); 


Lütfen hiçbir öneri ajax kullanmak zorunda.

cevap

22

/bir dizeye nesneyi dönüştürmek şeklinde bir dize görecekti göndermeden önce. Bunun için jQuery.param()'u kullanabilirsiniz.

$('#obj').val(jQuery.param(obj)); 
+1

A + ilk soru okumak için, ve cevabınız da mükemmel çalışıyor :) Kabul edecek asap – Hailwood

+1

+1, ve burada bir demo: http://jsfiddle.net/TQEzE/ – karim79

+0

bile yinelemeli çalışır {a: {b: 'c', d: {e: 'f', g: 'h'} , i: 'j'} '=>' a [b] = c & a [d] [e] = f & a [d] [g] = h & i = j' – user3338098

11

Sunucuya nesneyi göndermek için JSON gösterimi kullanılarak düşünebilirsiniz. Sayfanıza bir JSON parser/renderer eklediyseniz, (şu anda tüm modern tarayıcılarda yerleşiktir ve ayrıca standart modda IE8) nesneyi tam nesne grafiğini koruyan bir dizeye dönüştürebilirsiniz. Çoğu sunucu tarafı dilleri şimdi JSON ayrıştırmalarına sahiptir (PHP'de json_decode, örneğin). Formu göndermeden önce bu dizeyi gizli form alanınıza yerleştirebilirsiniz. şu şekilde görünecektir

:

$('#obj').val(JSON.stringify(obj)); 
$('form').submit(); 

... ve sunucu tarafı Sen serialize gerekiyor

{ "p1" : true, "p2" : true, "p3" : false } 
+0

bütün soru okuyunuz. Dinamik olarak oluşturulmuş bir dosyayı indirirken form gereklidir, ajax verilerinden dosya indirmesine neden olamazsınız. Herhangi bir yerde oluşturulan dosyayı saklayamıyorum, böylece dosyayı ajax çağrısı üzerinden üretip, geri dönen bir url de çalışmayacaktır. – Hailwood

+0

@Hailwood: Bunu özlediğime inanamıyorum. Sabit. –

+0

@ T.J. Şerefe, yeni cevabın işe yarayacak. Ancak @ Matt'in cevabını kullanıyorum :) (ps, benden bir not al) – Hailwood