2010-04-08 2 views
4

Je viens de mettre à jour mon jQuery de 1.3.2 à 1.4.2, et je pense que cela me pose quelques problèmes. J'ai une fonction $.post() qui appelle une méthode de commande et passe le long de certaines données que je format comme ceci:jQuery 1.4.2 Le format JSON rompt ce qui fonctionnait en 1.3.2

$.post(url, { arrayParam: myArray, param2: false }, someCallback, 'html'); 

En Firebug, le POST dit les paramètres 1.3.2 ressembler à ceci:

arrayParam: 100 
arrayParam: 101 (etc..) 

Mais pour qu'ils 1.4.2 ressemblent à ceci:

arrayParam[]: 100 

ce me brise le contrôleur qui attend un List<Int32> pour arrayParam (et est à l'origine de quelques problèmes JSON autour de la base de code). Y a-t-il un moyen de contourner ce problème sans revenir à 1.3.2 ou reprogrammer tous mes contrôleurs?

Merci

Répondre

9

À partir de jQuery 1.4, la méthode .param de $() sérialise objets profonds récursive pour accueillir les langages de script modernes et des cadres tels que PHP et Ruby on Rails. Vous pouvez désactiver cette fonctionnalité globalement en définissant jQuery.ajaxSettings.traditional = true;.

méthodes ajax de jQuery utilisent $ .param() sur les données transmises dans.

Voir jquery param pour plus d'informations.

Voici votre solution:

jQuery.ajaxSettings.traditional = true; 
+0

cela est correct. Merci pour ça! – Jason

Questions connexes