2011-05-04 8 views
7

que estoy haciendo un post AJAX simple usando jQuery, funciona muy bien:posterior AJAX con jQuery cambiar el nombre de un parámetro de matriz

var parameters = {firstName: 'John', lastName: 'Smith'}; 
$.post('http://api.example.com/rest', parameters, function(data) { 
    alert('Response: ' + data.someResult); 
}); 

Sin embargo, cuando agrego una matriz para los parámetros, así:

var parameters = {firstName: 'John', lastName: 'Smith', children: ['Susy', 'Billy']}; 

Entonces, el problema es el nombre del parámetro children que se cambia a children[] (en realidad URL codificada a children%5B%5D) al exponer en el servidor. No puedo cambiar el servidor para buscar parámetros con el nombre children[], entonces ¿qué debo hacer? ¿Cómo puedo PUBLICAR valores múltiples con el nombre children? ¿Por qué jQuery cambia el nombre de mi parámetro?

Respuesta

6

Creo que debe habilitar la codificación de los parámetros traditional.

Ver http://api.jquery.com/jQuery.ajax/ y http://api.jquery.com/jQuery.param

Como $.post no tiene una opción específica para este que se tendrá que volver a $.ajax o utilice la configuración global de jQuery.ajaxSettings.traditional = true.

+0

Ok gracias! Me preocupa que establecer un valor global como ese pueda interferir con otras secuencias de comandos de terceros en mis páginas web. Entonces usaré el mecanismo $ .ajax. –

+0

También puede llamar a 'jQuery.param (parameters, true)', pasando el resultado donde actualmente pasa los 'parámetros' sin procesar: ** [jQuery.param()] (http://api.jquery.com/jQuery. param /) ** – hippietrail

Cuestiones relacionadas