所以我目前有一个设置,当用户点击链接时,链接的ID通过AJAX发送到coldfusion页面,该页面使用它来进行查询并返回一个对象。
jquery函数如下所示:
$(".thelink").click(function(){
var link_id = $(this).attr("id");
var postData ={
link_id: link_id,
}
$.ajax({
type: "post",
url: "includes/query.cfm",
contentType: "application/json",
data:JSON.stringify(postData),
datatype: "json",
success: function(data){
$("#derpaderp").html(data.DATA.NAME);
}
})
})
它将数据发送到执行查询的CFM文件,并生成单行数据。然后我用
<CFOUTPUT>#SerializeJSON(myQuery, true)#</CFOUTPUT>
返回数据。这一切都很好,我可以在开发人员工具中看到这一点:
现在,如果你回顾一下AJAX函数,在“成功”下,我试图基本上访问DATA对象中的值,正如你在图像中看到的那样,我收到错误“数据.DATA“未定义。
我如何获取DATA对象中的项的值(name,visible_url,landing_url等等)
谢谢!
弗拉德的回答解决了上述问题,但后续问题:
如果我需要再次查询CFM文件:
<CFOUTPUT>
<cfset object0 = RemoveChars(#SerializeJSON(query1, true)#, 1, 2) >
<cfset object1 = RemoveChars(#SerializeJSON(query2, true)#, 1, 2) >
#object0#
#object1#
</CFOUTPUT>
它给我一个像这样的JSON响应
我仍然需要从DATA对象获取信息,但是现在有两个,如上图所示
我正在尝试这个
$.ajax({
type: "post",
url: "includes/query.cfm",
contentType: "application/json",
data:JSON.stringify(postData),
datatype: "json",
success: function(data){
var pdata = $.parseJSON(data[0]);
console.log(pdata);
}
})
基于弗拉德对原始问题的回答,但这是一个错误。
答案 0 :(得分:2)
在您的成功功能中,您可以添加parseJson功能。您可以使用console.log检查所需的其他值。
$.ajax({
type: "post",
url: "includes/query.cfm",
contentType: "application/json",
data:JSON.stringify(postData),
datatype: "json",
success: function(data){
var pdata = $.parseJSON(data);
console.log(pdata.DATA.VISIBLE_URL)
//$("#derpaderp").html(pdata.DATA.VISIBLE_URL);
}
})
答案 1 :(得分:0)
好的,我找到了后续问题的解决方案。
基本上发生的事情是我通过AJAX函数发送了两个单独的对象。像这样:
{"COLUMNS": x, "ROWCOUNT":Y, "DATA:Z}
{"COLUMNS": x, "ROWCOUNT":Y, "DATA:Z}
这会导致解析错误,因为有2个对象。我通过创建一个要发回的对象来解决这个问题。
<cfset object0 = RemoveChars(#SerializeJSON(query1, true)#, 1, 2) >
<cfset object1 = RemoveChars(#SerializeJSON(query2, true)#, 1, 2) >
<CFOUTPUT>
{"FIRST":[#object0#], "SECOND":[#object1#]}
</CFOUTPUT>
然后通过这样做在Jquery中获取该信息:
$.ajax({
type: "post",
url: "includes/query.cfm",
contentType: "application/json",
data:JSON.stringify(postData),
datatype: "json",
success: function(data){
var pdata = $.parseJSON(data);
var object1_data = pdata.FIRST[0];
var object2_data = pdata.SECOND[0];
console.log(object1_data.DATA.VISIBLE_URL)
}
})
这成功记录了&#34; VISIBLE_URL&#34;的值。从第一个查询。
谢谢大家!