2008-10-12 11 views
5

Aşağıda, $ .ajax çağrısı, veri bölümünde bir seçimleri (çoklu) seçili değerleri nasıl koyabilirim?

$('#userid option').each(function(i) { 
if (this.selected == true) { 

ama nasıl benim verilerine yönelik yerim ne: bölüm

$.ajax({ 
    type: "post", 
    url: "http://myServer" , 
    dataType: "text", 
    data: { 
     'service' : 'myService', 
     'program' : 'myProgram', 
     'start' : start, 
     'end' : end , 
     }, 
    success: function(request) { 
     result.innerHTML = request ; 
    } // End success 
    }); // End ajax method 

DÜZENLEME Ben bu kod ile nasıl döngü seçer ile seçilen seçeneklere anlamaları dahil olması gerekirdi?

cevap

5

Bir dizi nasıl kullanılır?

data: { 
    ... 
    'select' : ['value1', 'value2', 'value3'], 
    ... 
}, 

düzenlemek: ah pardon, burada kod, birkaç uyarılar var:

'select' : $('#myselectbox').serializeArray(), 

sırayla serializeArray için() olsa çalışmak, tüm form elemanları bir isim niteliği olmalıdır. Yukarıdaki 'select' değeri, seçilen öğelerin adını ve değerlerini içeren bir nesne dizisi olacaktır.

'select' : [ 
    { 'name' : 'box', 'value' : 1 }, 
    { 'name' : 'box', 'value' : 2 } 
], 

seçme kutusu

Yukarıdaki sonuç olacaktır üretmek için:

<select multiple="true" name="box" id="myselectbox"> 
    <option value="1" name="option1" selected="selected">One</option> 
    <option value="2" name="option2" selected="selected">Two</option> 
    <option value="3" name="option3">Three</option> 
</select> 
+0

Ayrıca $ (": selected #selectbox") seçicisini de isteyebilirsiniz: $ # .ajax belgelerini okuduğumda "#selectbox" seçtiğiniz etiketiniz – Sugendran

+0

. Özellikle veri :, kullanma cevabınızı aldım 'select' için bir dizi ... jQuery bir dizi olarak girilen paristen serileştirir. Eğer alırsınız & seçin = parm1 & select = parm2 & select = parm3, vb. teşekkürler –

4

Teşekkür @Owen gelen cevaba, çalışmak için bu kodu var. Birden = "true" bir id = "mySelect" ile seçilmiş kutu

var mySelections = []; 
    $('#mySelect option').each(function(i) { 
     if (this.selected == true) { 
      mySelections.push(this.value); 
     } 
    }); 


    $.ajax({ 
     type: "post", 
     url: "http://myServer" , 
     dataType: "text", 
     data: { 
     'service' : 'myService', 
     'program' : 'myProgram', 
     'selected' : mySelections 
     }, 
     success: function(request) { 
     result.innerHTML = request ; 
     } 
    }); // End ajax method 
+0

ah işe koyuldunuz :) sadece bir not, serialize() döndürür & select = param etc… gibi değerler, serializeArray() öğesi, yukarıda ayrıntılandırdığım yapıya yerleştirir. şerefe. – Owen

2

seçilen birden fazla seçenekten oluşan bir koleksiyon temsil etmek doğru yolu SEÇ adlandırarak, bir dizi kullanmaktır için

[] son ​​eki ile etiketleyin.
Sorun, jQuery yöntemi serialize() tarafından doğru şekilde işlenmemiş olmasıdır. Böyle bir SEC için
infact:

<select name="a[]"> 
    <option value="five">5</option> 
    <option value="six">6</option> 
    <option value="seven">7</option> 
</select> 

serialize Bu dizi gönderir: a [] = 0 & bir [] = 1 & bir [] = 2 PHP ile bu şekilde alınan:

[a] => Array 
    (
     [0] => 0 
     [1] => 1 
     [2] => 2 
    ) 
Gerçek değerler kaybolduğunda

.

+1

Neden bunun bir PHP sorusu olduğunu varsayalım? Diğer diller POST yoluyla bir dizi ile ne yapacağını biliyor – Ryley

İlgili konular