通过ajax请求从jquery对象获取特定值

时间:2016-02-23 21:31:14

标签: jquery json ajax object coldfusion

所以我目前有一个设置,当用户点击链接时,链接的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>

返回数据。这一切都很好,我可以在开发人员工具中看到这一点:

JSON return object

现在,如果你回顾一下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响应

Response with multiple queries

我仍然需要从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);
        }
    })

基于弗拉德对原始问题的回答,但这是一个错误。

2 个答案:

答案 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;的值。从第一个查询。

谢谢大家!