【发布时间】:2023-04-06 04:38:01
【问题描述】:
所以我是一个真正的 JQUERY 新手,所以请放轻松。
我想使用从 CFC 返回的数据填充 CFSELECT。这是我的工作 CFC:
<cfcomponent>
<cffunction name="getDescriptions" access="remote" returnformat="json" returntype="string" output="false">
<cfquery name="customDescriptions" datasource="#datasource#">
select description
from service_descriptions
where description <>"ADD NEW"
order by description
</cfquery>
<cfset data = serializeJSON(customDescriptions)>
<cfreturn data>
</cffunction>
以下是从我的 CFC 中返回数据的方式:
---->从列表中选择
我正在努力使用我的 AJAX 代码来填充我的 CFSELECT 表单元素。
<cfselect name="descriptionDD4" id="descriptionDD4">
<option value="add_new">ADD NEW</option>
</cfselect>
这是迄今为止我的 AJAX 所拥有的,但它不起作用。
<script>
$(document).ready(function CheckAjaxCall()
{
$.ajax({
type:'POST',
url:'cfcs/get_descriptions.cfc?method=getDescriptions',
dataType:'json',
cache:false,
success:function(customDescriptions){
$('##descriptionDD4').get(0).options.length = 0;
$('##descriptionDD4').get(0).options[0] = new Option("--Select--", "0");
$.each(description, function(i,item) {
$('##descriptionDD4').get(0).options[$('##descriptionDD4').get(0).options.length] = new Option(item[i].Name, item[i].roll);
// Display Value
});
},
//error:function(){alert("Connection Is Not Available");}
});
return false;
});
</script>
任何帮助将不胜感激。谢谢。 -布赖恩
【问题讨论】:
-
有一种更简单的方法来填充您的 cfselect。只需使用 ColdFusion。不需要 json、ajax、javascript 和其他任何复杂的东西。
-
@Brian -
<cfselect>只是一个普通 html 选择的包装器,其中包括一些基于 不同(和更旧的)javscript 库而不是 jQuery 的笨拙 UI 代码。由于您使用的是 jQuery,因此请放弃<cfselect>并改用<select>。 -
是的,我知道使用 CFSELECT 的绑定或查询功能更容易,但是当此页面上的某些其他元素通过 AJAX 调用(没有页面)发布时,我需要刷新此 CFSELECT 中的数据刷新)。我的目标是通过在不同的 AJAX 发布成功时调用填充它的函数来刷新它。我觉得我很接近代码,对吧?
-
你写的代码不需要
cfselect所以停止使用它。你应该避免使用任何 CF UI 元素,它们充满了问题、糟糕的实现和有限的功能。可能的问题是您没有以预期的格式返回数据。仅对查询进行 JSON 处理很少(如果有的话)是客户端所期望的格式。查看使用 Chrome 开发工具或 Firefox 中的 FireBug 返回的数据,了解我的意思。 -
另外,在你的函数中,你有
returnformat="JSON",然后你在返回之前序列化数据。摆脱serializeJSON()调用并返回customDescriptions。或者摆脱两者并将returnFormat=json添加到 AJAX 调用本身。这样,该函数可以服务于多种用途。
标签: jquery ajax coldfusion