Я работаю с ColdFusion Server версии 8,0,0,176276.Содержимое ColdFusion cfautosuggestvalue пустое, хотя хороший массив возвращается из cfc
Я пытаюсь добавить поле формы, предложенное авторами, с асинхронной совокупностью через cfc. Я использую http://www.forta.com/blog/index.cfm/2007/5/31/coldfusion-ajax-tutorial-1-autosuggest для вдохновения и синтаксиса.
Поле autosuggest отлично работает, если я использую статический запрос (как в первом примере Форты). Cfc успешно возвращает массив, когда он не используется в поле формы.
Но когда я использую cfc для autosuggest, никаких предложений не предусмотрено.
Я не могу видеть содержимое поля ввода с «источником просмотра», но если я «проверяю элемент» в поле в Chrome, я вижу div с классом = «yui-ac-bd», и под ним. Элементы списка в ul пусты при использовании cfc, тогда как при использовании статического запроса элементы списка содержат элементы массива.
Вот код на моей странице:
<cfform>
<cfinput type="text" name="JobP"
autosuggest="cfc:autosuggest.AutoSuggest({cfautosuggestvalue})">
</cfform>
И вот autosuggest.cfc:
<cfcomponent output="false" >
<cffunction name="AutoSuggest" access="remote" returntype="array">
<cfargument name="ObjectType" required="false" default="JOBP">
<cfset var result=ArrayNew(1)>
<cfquery name="Objects" datasource="UC4MP">
SELECT oh_name
FROM uc4.oh
WHERE oh_otype = '#ObjectType#'
AND oh_deleteflag = 0
AND oh_lastdate > sysdate - 90
AND oh_client = 1000
and oh_name like 'A%'
ORDER BY oh_name
</cfquery>
<cfloop query="Objects">
<cfset ArrayAppend(result,oh_name)>
</cfloop>
<cfreturn result>
Если я ставлю следующий код на моей странице, то он выводит массив с требуемым содержанием:
<cfinvoke component="autosuggest" method="AutoSuggest" returnVariable="result">
cfdump var="#result#">
Я пока не использую jQuery; большинство моих результатов Google для автозахвата CF связаны с jQuery, и я не смог пробраться через них в связи с моей проблемой. На всякий случай это будет ваше предложение.
Причина, по которой большинство из них предлагает использовать jquery, заключается в том, что [CF-материал имеет много причуд] (http://stackoverflow.com/a/19983983/104223). Неизменно вам нужно настроить встроенный материал и тратить много времени на то, чтобы настроить старые библиотеки ajax, встроенные в CF. Запуск w/JQuery с самого начала позволяет сэкономить много времени. Он широко используется, тестирование намного проще для обновления. Сказав это, вы 1) Проверьте свой CFC самостоятельно в браузере? 2) Вы [включили CF Ajax Debugger] (http://help.adobe.com/en_US/ColdFusion/9.0/Developing/WSc3ff6d0ea77859461172e0811cbec10e40-8000.html)? – Leigh
На основании приведенного выше кода вы хотите, чтобы ваш пользователь набрал «тип» и просмотрел список связанных имен? i.e набираю букву «J», и я вижу список, начинающийся с «A»? Это счетчик интуитивно понятен, используя «тип», и вход «имя» может быть лучшим подходом. – KobbyPemson
Да, поэтому сначала вы должны сначала проверить cfc. Обязательно проверьте его * с параметрами *, чтобы вы могли видеть, возвращает ли запрос ожидаемые результаты для введенных значений. – Leigh