2011-02-25 40 views
14

bir form değerleri seri ve ajax ör için gibijQuery serialize ve çok seçme açılan

sunması jquery serialize() fonksiyonu kullanılarak olmuştur Form adı ve kimliği factoryUsers

var data=$("#factoryUsers").serialize();

Şimdi bu metin alanları, metin alanları, basit damla çıkışlar vb var Ama birden açılan olduğunda, işler ters gitmeye formları için çalışıyor ise Örneğin, Ben türünde bir açılan varsa

<select size="5" id="factoryUsers" name="factoryUsers" multiple="multiple">

serialize artık düzgün çalışmıyor. Ben 3 kullanıcıları seçerseniz yüzden factoryUsers[]

konusunda fikrin ya yardımcı ya da bu düzgün çalışmasını olacağını nasıl yardım etmez dizisi tipine seçme değişen

factoryUsers=5&factoryUsers=23&factoryUsers=11

gibi bir sorgu dizesi olsun harika.

+2

Eh, jQuery mükemmel çalışıyor. FactoryUsers = 5 & factoryUsers = 23 & factoryUsers = 11 sorgu dizesinin sunucu tarafından doğru bir şekilde işlenip yüklenemeyeceğinden emin değildim ve bir dizi $ _POST ['factoryUsers'] dizisindeki tüm değerleri aldığım için mükemmel bir şekilde işlediğinden emin oldum 3 değere sahip bir dizi. Sadece bahsetmek için 'factoryUsers []' – Amitabh

+0

çok yararlı bir soru - ipuçları için thx kullanılır! – Helmut

cevap

11

Yukarıda açıkladığınız dize çıktısı, HTTP üzerinden aynı ada sahip formlar için birden fazla değer göndermenin doğru yoludur, bu nedenle jQuery doğru şekilde çalışıyordur. Bunun, sunucu tarafında nasıl işlendiğini ele almak size bağlıdır. Bu, hangi dili kullandığınıza bağlıdır. PHP kullanıyorsanız

, bu yardımcı olabilir: http://bytes.com/topic/php/answers/12267-how-php-_post-gets-multiple-values-html-form

Eğer Kullandığınız dili bize söyleyebilir misiniz?

+0

PHP kullanıyorum. Haklısınız, doğru şekilde işlemek için sunucu tarafı diline kadar. FactoryUsers = 5 & factoryUsers = 23 & factoryUsers = 11 sorgu dizesinin sunucu tarafından doğru bir şekilde işlenip yüklenemeyeceğinden emin değildim ve bir dizi $ _POST ['factoryUsers'] dizisindeki tüm değerleri aldığım için mükemmel bir şekilde işlediğinden emin oldum 3 değer içeren bir dizi – Amitabh

+0

Sizin için çalıştığıma sevindim. PHP'nin alan adının sonunda [] 'yı kullanmanın "özel" yöntemini öğrendiniz gibi görünüyor. Projenizin geri kalanında iyi şanslar. – Jordan

+0

Teşekkürler! Evet, PHP'nin factoryUsers [] gibi alanlar için kaydedilmiş değerleri işleyebildiğini biliyordum, ama bilmediklerim fabrikadakiler gibi geçti [] = 5 & factoryUsers [] = 23 & factoryUsers [] = 11 ve bu sorgu dizesini gördüğümde Mükemmel bir şekilde ele alınmayacağını düşündüm, bu yüzden yanlışlıkla test ettim, ilk önce test etmeden işe yaramadı, bir şeylerin yanlış olduğunu düşünüyorum. Teşekkürler, onu sınamak için bir ton, beni tekrar test etti. – Amitabh

13

Seçimin adını factoryUsers[] olarak değiştirmeyi deneyin. Bu şekilde arka ucunda dönebilirsiniz.

7

İhtiyacınız olan tek şey name = "factoryUsers" olarak adlandırılır, name = "factoryUsers []" PHP diziyi işlemiş olarak ele alır.

2

Sadece

data='factoryUsers=' + $("#factoryUsers").val(); 

O virgül ayrı olan değerler verilmiştir verecektir() val ile değerini elde etmeye çalışmak.

factoryUsers = 1,2,4

bu öğe formu biriyse. Ardından, serialize öğesinin sonunun değerini eklemeyi deneyin. Örnek:

data= f.serialize() + '&factoryUsers=' + $('#factoryUsers').val(); 

beri istek içine iki defa yazılı öğe, son değer denetleyicisi geçerli olacaktır.

1

PHP fonksiyonunu Bu işlev, bir özü işlevi gibi görünüyor

parse_str($_POST) 

kullanabilirsiniz. Bunu çalıştırdıktan sonra, $factoryUsers adlı bir türe erişebilirsiniz ve bu var, $factoryUsers[n] dizisidir.

0

Sizin elemanları isim dizisi tipi factoryUsers[] Değişim kodunuzu bu olmalıdır: Ürdün Gönderen olarak

<select size="5" id="factoryUsers" name="factoryUsers[]" multiple="multiple"> 

Teşekkür ...