У меня есть ColdFusion функции CFC, как это:Как передать переменную массива в удаленный метод ColdFusion CFC через ajax с помощью jQuery?
<cffunction access="remote" name="getResults"
returntype="struct"
returnformat="JSON"
output="no">
<cfargument name="q" required="true" type="array" />
...
</cffunction>
Как назвать эту функцию из JQuery? Ни одна форма кодирования массива jQuery не заставит ColdFusion видеть значение как массив.
Если вы передадите «q = a & q = b» (например, с помощью jQuery.ajaxSettings.traditional = true), функция получит строку «a, b», а не массив. Хотя разделение на запятую может показаться возможной, оно не будет работать, если одно из значений «q» содержит запятую. Кроме того, в идеале, функция на стороне сервера не должна знать о проблемах, связанных с сериализацией данных по проводу, и должна продолжать принимать массив.
Если вы передадите «q [] = a & q [] = b" (по умолчанию jQuery), он не будет отображаться на параметр «q». Если вы попытаетесь изменить имя параметра «q» на «q []», CFC выйдет из-за неправильного имени параметра.
Ну, я бы сказал, что jQuery действительно кодирует массивы, просто не так, как может принять ColdFusion. По умолчанию в jQuery 1.4.3 массивы кодируются в моде, совместимом с PHP и Ruby on Rails, путем предоставления нескольких параметров с именем параметра, которое добавляет «[]» к имени переменной. Используя «традиционный» параметр, он кодирует их так же, как HTML-форма для нескольких флажков, просто отправляя несколько параметров. Ваш подход к тому, чтобы понять это, соответствовал моей. Спасибо за подробный образец кода! – jrduncans
У меня похожие проблемы сегодня, начиная с Angular 4 до CF10. работа 'argumentCollection' все еще работает. Отправка массива JSON в качестве аргумента формы не выполняется. Стоит отметить, что изменение типа аргумента CFC от 'array' до' any' позволит CFC-коду обрабатывать аргумент в виде массива с помощью функции argumentsCollection. – JeffryHouser