Javascript 如何从$.ajax()成功回调访问和输出json结果
我正在使用coldfusion和jquery。这是我第一次真正尝试jquery,我已经搜索和阅读了很长一段时间而没有破解它,因此任何帮助都将不胜感激 好的,我有一个自动完成返回一个id。然后我将id传递给第二个函数,该函数返回一个数据类型json数组。自动完成功能非常好,我可以让json显示在警报框中,但我对如何使用json结果有点困惑 我正在尝试循环json数组,并将值写入单选按钮,然后动态显示在页面上。。。所以整个想法是这样的Javascript 如何从$.ajax()成功回调访问和输出json结果,javascript,jquery,coldfusion,Javascript,Jquery,Coldfusion,我正在使用coldfusion和jquery。这是我第一次真正尝试jquery,我已经搜索和阅读了很长一段时间而没有破解它,因此任何帮助都将不胜感激 好的,我有一个自动完成返回一个id。然后我将id传递给第二个函数,该函数返回一个数据类型json数组。自动完成功能非常好,我可以让json显示在警报框中,但我对如何使用json结果有点困惑 我正在尝试循环json数组,并将值写入单选按钮,然后动态显示在页面上。。。所以整个想法是这样的 从下拉框中选择用户并返回id 选择中的用户id被传递给用户选项函
<script type="text/javascript">
// <!--
$(document).ready(function() {
$("#userName").autocomplete({
cache:false,
source: "/jqueryui/com/autocomplete.cfc?method=getUser&returnformat=json",
//setup hidden fields
select:function(event,ui) {
var uid = ui.item.id;
$("#userid").val(ui.item.id);
// start call to get user options
$.ajax({
type: "POST",
url: "/jqueryui/com/autocomplete.cfc?method=getUserOptions&returnformat=json",
data: ({ userid: uid }),
success: function(data) {
alert(data)
}
});
/// end call to get user options
}
});
});
// --->
</script>
我需要知道如何循环浏览这些数据,并为每个选项创建一个单选按钮,可能类似于这样,然后将它们全部显示在屏幕上,我猜一旦我有东西要写,我将通过dom向a写入:
<input type="radio" name="userOption" value="#id#|#qty#|#term#">#productname#
及
这两个我都不能用
不管怎么说,这有点啰嗦了。希望这是明确的,再次感谢任何帮助或建议
谢谢 首先检查返回的
数据
参数的数据类型。您可能首先需要使用.parseJSON()
来构造JSON对象
那么您的for
循环语法不正确。此代码适用于我:
var data = [{"productname":"licence free","quantity":1,"term":12,"id":1},
{"productname":"licence basic","quantity":1,"term":24,"id":1},
{"productname":"licence full","quantity":1,"term":12,"id":2}];
for (var i=0; i<data.length; i++) {
alert(data[i].productname);
}
var data=[{“productname”:“无许可证”,“数量”:1,“术语”:12,“id”:1},
{“productname”:“基本许可证”,“数量”:1,“术语”:24,“id”:1},
{“产品名称”:“许可证已满”,“数量”:1,“期限”:12,“id”:2}];
对于(var i=0;i首先检查返回的数据
参数的数据类型。您可能首先需要使用.parseJSON()
来构造JSON对象
那么您的for
循环语法不正确。此代码适用于我:
var data = [{"productname":"licence free","quantity":1,"term":12,"id":1},
{"productname":"licence basic","quantity":1,"term":24,"id":1},
{"productname":"licence full","quantity":1,"term":12,"id":2}];
for (var i=0; i<data.length; i++) {
alert(data[i].productname);
}
var data=[{“productname”:“无许可证”,“数量”:1,“术语”:12,“id”:1},
{“productname”:“基本许可证”,“数量”:1,“术语”:24,“id”:1},
{“产品名称”:“许可证已满”,“数量”:1,“期限”:12,“id”:2}];
对于(var i=0;i尝试检查jquery函数。尝试检查jquery函数。我请求类型是否为字符串?如果是,请使用javascript函数eval尝试。它会将字符串转换为javascript类型。在您的情况下,类似的操作应该可以:
Var new\u data=eval(data);
现在它应该是一个可行的数组/对象
编辑:要保留数据变量,请执行以下操作:
data=eval(数据);
编辑2:
您的ajax调用忽略了dataType属性:
数据类型:“json”
有了这个,你就不需要上面的东西了,我说了,我问这个类型是字符串吗?如果是的话,用javascript函数eval试试。它会把字符串转换成javascript类型。在你的例子中,类似这样的方法应该可以:
Var new\u data=eval(data);
现在它应该是一个可行的数组/对象
编辑:要保留数据变量,请执行以下操作:
data=eval(数据);
编辑2:
您的ajax调用忽略了dataType属性:
数据类型:“json”
这样,您就不需要上面我说过的内容了使用each循环获取数据,并使用appendTo函数在带有result1 id的HTML元素中打印数据:
dataType:"json", //nature of returned data
success: function(data) {
var content = '';
$.each(data, function(i, dbdata) {
content += '<p>' + dbdata.columnName + '<p>';
});
$(content).appendTo("#result1");
}
dataType:“json”,//返回数据的性质
成功:功能(数据){
var内容=“”;
$.each(数据、函数(i、dbdata){
content+=''+dbdata.columnName+'';
});
$(内容)。附加到(“#结果1”);
}
使用each循环获取数据,并使用appendTo函数打印带有result1 id的HTML元素中的数据:
dataType:"json", //nature of returned data
success: function(data) {
var content = '';
$.each(data, function(i, dbdata) {
content += '<p>' + dbdata.columnName + '<p>';
});
$(content).appendTo("#result1");
}
dataType:“json”,//返回数据的性质
成功:功能(数据){
var内容=“”;
$.each(数据、函数(i、dbdata){
content+=''+dbdata.columnName+'';
});
$(内容)。附加到(“#结果1”);
}
谢谢,elav()在success函数中不起作用。Firebug控制台错误为“missing;before statement”。我在某处读到数据类型:“type”是过时的??当我添加成功不再触发时。我在url中有&returnformat=json。这是一个有效的替代方案吗?您的&returnformat=json
仅适用于您的脚本,说明它需要生成什么输出。因此,您可以编写脚本(您调用什么)知道您想要一个json作为返回。当您将属性数据类型添加到$.ajax
函数时,您会说返回的结果是json,响应变量(您的案例“数据”)是json对象。$.ajax({type:“POST”,url:/jqueryui/com/autocomplete.cfc?method=getUserOptions&returnformat=json),数据:({userid:uid}),数据类型:“json”,success:function(data){console.log(data);}});
谢谢,elav()在success函数中不起作用。Firebug控制台错误为“missing;before statement”。我在某处读到数据类型:“type#”是过时的??当我添加成功不再触发时。我在url中有&returnformat=json。这是一个有效的替代方案吗?您的&returnformat=json
仅适用于您的脚本,说明它需要生成什么输出。因此,您可以编写脚本(您调用什么)知道您想要一个json作为返回。当您将属性数据类型添加到$.ajax
函数时,您会说返回的结果是json,响应变量(您的案例“数据”)是json对象。$.ajax({type:“POST”,url:/jqueryui/com/autocomplete.cfc?method=getUserOptions&returnformat=json),数据:({userid:uid}),数据类型:“json”,成功:函数(数据){conso
dataType:"json", //nature of returned data
success: function(data) {
var content = '';
$.each(data, function(i, dbdata) {
content += '<p>' + dbdata.columnName + '<p>';
});
$(content).appendTo("#result1");
}