J'ai une fonction de CFC ColdFusion comme ceci:Comment envoyer une variable de tableau à une méthode distante ColdFusion CFC via ajax en utilisant jQuery?
<cffunction access="remote" name="getResults"
returntype="struct"
returnformat="JSON"
output="no">
<cfargument name="q" required="true" type="array" />
...
</cffunction>
Comment appeler cette fonction de jQuery? Aucune forme de codage de tableau par jQuery n'obtiendra à ColdFusion de voir la valeur en tant que tableau.
Si vous passez "q = a & q = b" (comme avec jQuery.ajaxSettings.traditional = true), la fonction obtiendra la chaîne "a, b", pas un tableau. Si la séparation sur virgule peut sembler une possibilité, elle ne fonctionnera pas si l'une des valeurs "q" contient une virgule. De même, idéalement, la fonction côté serveur ne devrait pas avoir à connaître les problèmes de sérialisation des données sur le réseau et devrait continuer à intégrer un tableau.
Si vous transmettez "q [] = a & q [] = b" (valeur par défaut de jQuery), il ne sera pas mappé sur le paramètre "q". Si vous essayez de changer le nom du paramètre "q" en "q []", le CFC va faire une erreur en raison d'un nom de paramètre invalide.
Eh bien, je dirais que jQuery encode les tableaux, mais pas d'une manière que ColdFusion peut accepter. Par défaut dans jQuery 1.4.3, les tableaux sont codés de manière compatible avec PHP et Ruby on Rails, en fournissant plusieurs paramètres, avec un nom de paramètre qui ajoute "[]" au nom de la variable. En utilisant le paramètre "traditionnel", il les code de la même manière qu'un formulaire HTML pour plusieurs cases à cocher, en n'envoyant que plusieurs paramètres. Votre approche pour comprendre cela correspondait à la mienne. Merci pour l'exemple de code détaillé! – jrduncans
Je vais avoir des problèmes similaires aujourd'hui en postant de Angular 4 à CF10. le contournement 'argumentCollection' fonctionne toujours. Envoyer un tableau JSON en tant qu'argument de formulaire ne le fait pas. Il est à noter que le changement du type CFC Argument de 'array' à' any' permettra au code CFC de traiter l'argument en tant que tableau avec la fonction argumentCollection. – JeffryHouser