2010-02-03 15 views
10

El siguiente código funciona para mí usando jQuery 1.2.6 pero causa un error de corredor en 1.4.Pasar matrices en la llamada ajax usando jQuery 1.4

var items = new Array(); 
items[0] = "Item 1"; 
items[1] = "Item 2"; 
items[2] = "Item 3"; 

var dataToSend = {'_service' : myService, '_program' : myProgram, 'selections' : items} ; 

$.ajax({  
type: "post", 
url: myURL, 
dataType: "text", 
data: dataToSend, 
success: function(request) {$('#results').html(request); } // End success 
}); // End ajax method 

El error corredor de recibo indica que lo que se está pasando en la selección es 'selecciones []'

ERROR:. (carácter no válido "[" en el nombre del campo "selecciones []" Este personaje no está permitido en los nombres de campo.)

¿Hubo algún cambio en la forma en que jQuery maneja las matrices en una llamada ajax? o era esta una forma incorrecta de pasar una matriz?

Cualquier ayuda sería apreciada.

EDITAR: La respuesta de @jvenema resolvió mi problema. Con la configuración "tradicional" puede hacer que jQuery maneje los parámetros como la versión anterior. Aquí hay algunos enlaces adicionales que hablan sobre el cambio jQuery.ajax(), jQuery.param() y una publicación de blog jQuery 1.4 $.param demystified.

Cualquiera de una declaración general de

jQuery.ajaxSettings.traditional = true; 

o como una opción adicional en la llamada ajax

$.ajax({  
traditional: true, 
type: "post", 
url: myURL, 
dataType: "text", 
data: dataToSend, 
success: function(request) { 
    $('#results').html(request); 
} // End success 
}); // End ajax method 

Respuesta

21

jQuery 1.4 se actualizó para utilizar la sintaxis de PHP para enviar matrices. Se puede cambiar en el viejo estilo usando:

jQuery.ajaxSetting.traditional = true; 

Ver here para más detalles.

+3

Además, debe mencionar la forma de hacerlo para una sola llamada Ajax: agregar tradicional: verdadero al objeto $ .Ajax. –

+0

¿Hay alguna forma de obtener este resultado con 'getJSON()' o debo usar 'ajax()'? – hippietrail

0

Puede especificar la matriz como matriz JSON.

'selections' : {items : ['Item 1', 'Item 2', 'Item 3']} 

Creo que esto también funcionará.

'selections' : {items : items} 

Tome una mirada here de recursos adición.

Cuestiones relacionadas