2008-10-12 14 views
5

A continuación se muestra mi llamada $ .ajax, ¿cómo pongo una selección (múltiples) valores seleccionados en la sección de datos?

$.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 

EDITAR que debería haber incluido opciones que entiendo cómo recorrer los selecciona seleccionados con este código:

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

pero ¿cómo encaja eso en mis datos: sección?

Respuesta

5

¿qué tal usar una matriz?

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

edición: ah lo siento, aquí está el código, algunas advertencias:

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

con el fin de serializeArray() para trabajar sin embargo, todos los elementos de formulario debe tener un atributo de nombre. el valor de 'select' anterior será una matriz de objetos que contiene el nombre y los valores de los elementos seleccionados.

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

el cuadro de selección para producir el resultado anterior sería:

<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

Probablemente también desee el selector $ (": selected #selectbox") donde "#selectbox" es su etiqueta de selección – Sugendran

+0

cuando leo la documentación de $ .ajax ... específicamente datos: recibí su respuesta de uso una matriz para 'seleccionar' ... jQuery serializa los parms ingresados ​​como una matriz ... así que obtienes & select = parm1 & select = parm2 & select = parm3, etc. gracias –

4

Gracias a la respuesta de @Owen, Tengo este código para trabajar.

Para un cuadro de selección con un id = "MySELECT" múltiple = "true"

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 me alegra que lo hayas hecho :) solo una nota, serialize() regresa los valores como & select = param etc ... mientras que serializeArray() lo coloca en la estructura que detallo arriba. aclamaciones. – Owen

2

La forma correcta para representar una colección de múltiples opciones seleccionadas es usar un array, nombrando el SELECT etiqueta con un sufijo [].
El problema es que no se maneja correctamente con el método jQuery serialize().
Para un SELECT como este, de hecho:

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

serialize envía esta matriz: a [] = 0 & a [] = 1 & a [] = 2 recibida por PHP de esta manera:

[a] => Array 
    (
     [0] => 0 
     [1] => 1 
     [2] => 2 
    ) 

donde se pierden los valores reales.

+1

¿Por qué asumirías que se trata de una pregunta de PHP? Otros idiomas saben qué hacer con una matriz a través de POST – Ryley

Cuestiones relacionadas