让我先说一下这个问题。我刚刚开始使用jquery,所以请善待。
我已经搜索过这个答案了,我似乎找不到任何有用的东西,所以我在这里问这个问题。
我将有一个页面,其中包含一组选择框,这些选择框将根据选择的选项中的哪个选项填充复选框列表。我还没到那么远。到目前为止,我所有人都使用$.ajax
从服务器检索数据。如果我查看firebug控制台,我会看到我的JSON字符串。
{"DESCRIPTION":"Global Alpha I Benchmark","INCEPTION_DATE":"2004-02-29 00:00:00.0","DISCLOSURE":"","BENCHMARK_ID":"EBDVGA1INDEX"}
这是javascript:
$(document).ready(function(){
$(':input:visible:enabled:first').focus();
$(function(){
$("select#benchmarks").change(function(){
var formval = {benchmarks:$(this).val()}
$.ajax({
type:"POST",
data: formval,
url: "request_processor.cfm",
datatype: "json",
success:$(function(response){alert(response);})
});
});
});
});
HTML:
<cfform name="testForm">
<div align="center" id="databox">
<cfselect id="benchmarks" name="benchmarks" query="getBenchmarks" queryPosition="below" value="benchmark_id" display="benchmark_id">
<option value="">Please Select an ID...</option>
</cfselect>
<cfselect id="myselect" name="myselect"></cfselect>
</div>
<div id="contentdiv"></div>
我已经搞砸了,现在我甚至无法在屏幕上显示数据,所以我不知道该怎么做。任何帮助,将不胜感激。 \
更新:
@Rob
我已将以下内容添加到ajax调用的成功部分。
$.each(response,function(index){
options = "<option value='"+ response.description + "'>" + response.description + "</option>"
});
$("select#myselect").html(options);
现在没有任何反应!没有javascript错误,在firebug控制台中没有错误。
答案 0 :(得分:2)
success:$(function(response){alert(response);})
应该是
success:function(response){alert(response);}
$(function)是$(document).ready(function)的快捷方式,所以你实际上并没有为ajax成功回调绑定一个真正的函数。
更新: 刚注意到你有另一个不需要的$()
$(function(){
$("select#benchmarks").change(function(){
...
)
您已经在文档就绪事件中,此时无需再添加另一个回调文档。
答案 1 :(得分:1)
我发现您的“每个”代码存在一些问题。首先,根据您最初发布的JSON字符串,您只有一个对象。除非你将它包装在[]
中,否则.each将迭代每个属性,例如描述和起始日期。如果它被括在括号中,它将迭代它就像它是一个数组一样,对于集合中的每个项目都是一次。
因此,假设您将数组传递给它,您的代码应如下所示:
var options = '';
$.each(response, function(){
options += "<option value='"+ this.DESCRIPTION + "'>" + this.DESCRIPTION + "</option>";
});
$("select#myselect").html(options);
我做了两处修改。首先,我连接到选项字符串,因此收集所有选项。我也使用“this”来指向循环中的正确项目。
编辑:我也改变了描述的情况。我相信它区分大小写。