【问题标题】:I need Coldfusion to easily work with JSON data returned from AJAX call我需要 Coldfusion 轻松处理从 AJAX 调用返回的 JSON 数据
【发布时间】:2012-09-06 19:15:05
【问题描述】:

我有一个对远程 CFC 的 AJAX 调用,并以我喜欢的方式使用 JSON 取回数据,但是我在输出数据时遇到了麻烦,而不必猜测具有硬编码索引值的结构索引,例如:$(' #result').val(obj.DATA[0][3]);

如果我硬编码索引,例如 [3],如果我更改 CFC 中的查询,我必须更改 AJAX 结果。所以我想通过列名来引用返回的数据,但无法弄清楚。这是我的 AJAX 和远程 CFC 的结果:

$.ajax({
            url: '/app/components/MailingsReport.cfc',
            //POST method is used
            type: "POST",
            //pass the data 
            data: {
                method: "getCreativeByID",
                creativeID: $('#hdnCreativeID').val(),
                datasource: "shopping_cart",
        queryformat: "column"
                 },
            success: function(response){
                var obj = $.trim(response);
        var obj = jQuery.parseJSON(obj);
                //alert("response");
                $('#txtSubject').val( obj.COLUMNS["SUBJECT"][0] );
                }
            }

        });

氟氯化碳:

<!---gets the data for the creative--->
    <cffunction name="getCreativeByID" returntype="any" returnformat="JSON" access="remote" output="No">
        <cfargument name="creativeID" required="Yes" type="numeric" />
        <cfargument name="datasource" required="Yes" type="string" />

        <!--- Select creatives and {clickurl} --->
        <cfquery name="qGetCreativeData" datasource="#arguments.datasource#">
            exec sp_get_email_creative @creativeid = #arguments.creativeID#
        </cfquery>

        <cfreturn qGetCreativeData />

    </cffunction>

结果:

任何帮助将不胜感激!谢谢。

【问题讨论】:

  • 一种选择是将返回格式更改为文本并自己格式化 JSON。我通常这样做只是因为我不喜欢coldfusion给出的大写键。我会将数据作为对象数组返回。

标签: jquery ajax coldfusion coldfusion-9 cfc


【解决方案1】:

这适用于除 IE8 及以下版本之外的所有内容。如果您需要完全兼容,您可以编写自己的 indexOf JS 方法。

$('#result').val( obj.DATA[0][ obj.COLUMNS.indexOf('Creativename') ] );

如果您需要,此页面有在不直接支持它的浏览器中将 indexOf 添加到数组原型的说明:http://www.tutorialspoint.com/javascript/array_indexof.htm

【讨论】:

    【解决方案2】:

    您还可以使用 SerializeJSON(data, true) 以 JSON 格式返回查询,其中列名作为每行数据的键。因此,在您的 cfc 中,删除 returnformat="JSON",然后替换

    在您的 JavaScript 代码中,您现在应该能够逐行遍历返回的 JSON 字符串的数据部分,并通过列名引用值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-14
      • 2014-03-19
      • 2017-03-10
      相关资源
      最近更新 更多