我在表单中实现AJAX以链接下拉列表时遇到问题。我使用ColdFusion(CFC文件)从查询中检索结果。该函数正在运行,我以JSON格式检索结果:
[ { "ID" : "APEX",
"VALUE" : "Apex (not defined)"
},
{ "ID" : "AVI",
"VALUE" : "Plane (not defined)"
},
{ "ID" : "TRAIN 1",
"VALUE" : "Train 1st class"
},
{ "ID" : "VOIT",
"VALUE" : "Car"
},
{ "ID" : "ZERO",
"VALUE" : "Cost 0 (not defined)"
}
]
我不知道这个JSON是否正确才能在jquery脚本中使用。
在JQUERY脚本中,success
函数无法检索这些结果,console.log(result)
显示" undefined"。如果我尝试console.log(result.length)
,则会显示错误。
在Firebug中,我可以看到查询已经完成,响应是下面的JSON。
我的CFM文件中的JQuery脚本:
$().ready(function() {
$.ajax({
type: 'GET',
url: 'transport.cfc',
data: {
method: 'getTransports',
CITY_TO: 'LUX',
CITY_FROM: 'UWP'
},
dataType: 'json',
contentType: 'application/json',
success: function(result) {
var select = $("##transp");
select.empty();
select.append(
new Option('Select transport', '-1')
);
console.log(result) // displays "undifined"
/* GENERATES BUG
$.each(result, function(i, item) {
select.append(
new Option(item.ID, item.VALUE)
);
});*/
},
error: function(xhr, message) {
alert('ajax request failed');
console.log(xhr, message);
}
});
});
我使用的是Jquery 1.1.2版。我试着使用最后一个版本,但结果是一样的。我还尝试在论坛上提出以下解决方案:"用jsonp"替换json。通过这样做,结果显示在控制台中,感谢console.log(result)
,但循环each
不正常,错误' ajax请求失败'出现
我不知道如何解决问题,任何人都可以帮我解决吗?
答案 0 :(得分:1)
我发布了using Ajax with CFC functions的综合答案。我认为你所缺失的只是函数的returnformat
。
我发布的Ajax代码:
$.ajax({
async : true,
type : 'POST',
dataType : 'json',
url : 'test.cfc?method=testing&returnformat=json',
data : {
a : $('#a').val(),
b : $('#b').val()
},
success : function(data, textStatus) {
$('#data').val(JSON.stringify(data));
}
});
您正在data
数据包中传递方法名称。尝试在那里添加returnformat
:
url: 'transport.cfc',
data: {
method: 'getTransports',
returnformat: 'json',
CITY_TO: 'LUX',
CITY_FROM: 'UWP'
},
这应该确保从函数返回的内容具有正确的content-type
。