gpt4 book ai didi

jquery - 使用 jquery ajax json 格式,如何将查询从 .cfm 页面输出到调用 html 页面?

转载 作者:行者123 更新时间:2023-12-01 05:01:52 25 4
gpt4 key购买 nike

我已经成功完成了返回单个字符串和 cfdump 的教程。但我需要有关返回带有项目列表的查询的语法的帮助。

也是半repost因为看起来我的最后一个问题在回复中消失了。

问题:我尝试使用 jquery 从调用 cfc 的 .cfm 页面以 json 格式输出查询。有人可以告诉我我错了什么吗?

我目前遇到错误。

SyntaxError: JSON.parse: unexpected character.

在我的 .html 页面中,我有

   <html>
<head>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){

$("#runQuery").click(function () {

$.ajax({

type: "GET",
url: "./test.cfm",
dataType: "json",
success: function (resp, textStatus, jqXHR) {
buildResultsTable(resp);
},
error: function (jqXHR, textStatus, errorThrown)
{
alert(errorThrown);
}
});

});


function buildResultsTable(resp)
{
var tmp_html = $("<tr />");
var j = 0;

$("#results").html("");

for (var i = 0; i < resp["COLUMNS"].length; i++)
{
var tmp_th = $("<th />");
tmp_th.text(resp["COLUMNS"][i]);
tmp_html.append(tmp_th);
}
$("#results").append(tmp_html);

for (j = 0; j < resp["DATA"].length; j++)
{
tmp_html = $("<tr />");

for (var i = 0; i < resp["DATA"][j].length; i++)
{
var tmp_td = $("<td />");
tmp_td.text(resp["DATA"][j][i]);
tmp_html.append(tmp_td);
}
$("#results").append(tmp_html);
}

}

})
</script>

</head>

<body>
<input type="button" id="runQuery" value="Show Teams" />
<input type="text" name="name">

<table id="results" cellspacing="0" cellpadding="0">
</table>


</body>
</html>

在我的 test.cfm 调用页面中,我有

   <cfinvoke 
component="learncf_jquery"
method="getAllTeams"
returnVariable="getItems">
</cfinvoke>

<cfoutput>#SerializeJSON(getItems)#</cfoutput>

test.cfm 输出看起来像

{"COLUMNS":["TEAM"],"DATA":[["Dallas Cowboys"],["NY Giants"],["Philadelphia Eagles"],["Washington Redskins"]]} 

learncf_jquery.cfc(来自另一个教程的代码)

<cfcomponent name="jQueryExample" output="false">

<cffunction name="getAllPlayers" output="false" access="private" returntype="query">
<cfset var qAllPlayers = queryNew('playerName, team') />

<cfset queryAddRow(qAllPlayers, 40) />

<!--- add 10 Giants players to the "database" --->
<cfset querySetCell(qAllPlayers, 'playerName', 'Alford, Jay', 1) />
<cfset querySetCell(qAllPlayers, 'team', 'NY Giants', 1) />
<cfset querySetCell(qAllPlayers, 'playerName', 'Barden, Ramses', 2) />
<cfset querySetCell(qAllPlayers, 'team', 'NY Giants', 2) />
<cfset querySetCell(qAllPlayers, 'playerName', 'Beckum, Travis', 3) />
<cfset querySetCell(qAllPlayers, 'team', 'NY Giants', 3) />
<cfset querySetCell(qAllPlayers, 'playerName', 'Bernard, Rocky', 4) />
<cfset querySetCell(qAllPlayers, 'team', 'NY Giants', 4) />
<cfset querySetCell(qAllPlayers, 'playerName', 'Blackburn, Chase', 5) />
<cfset querySetCell(qAllPlayers, 'team', 'NY Giants', 5) />
<cfset querySetCell(qAllPlayers, 'playerName', 'Boss, Kevin', 6) />
<cfset querySetCell(qAllPlayers, 'team', 'NY Giants', 6) />
<cfset querySetCell(qAllPlayers, 'playerName', 'Bradshaw, Ahmad', 7) />
<cfset querySetCell(qAllPlayers, 'team', 'NY Giants', 7) />
<cfset querySetCell(qAllPlayers, 'playerName', 'Canty, Chris', 8) />
<cfset querySetCell(qAllPlayers, 'team', 'NY Giants', 8) />
<cfset querySetCell(qAllPlayers, 'playerName', 'Diehl, David', 9) />
<cfset querySetCell(qAllPlayers, 'team', 'NY Giants', 9) />
<cfset querySetCell(qAllPlayers, 'playerName', 'Feagles, Jeff', 10) />
<cfset querySetCell(qAllPlayers, 'team', 'NY Giants', 10) />

<!--- add 10 Cowboys players to the "database" --->
<cfset querySetCell(qAllPlayers, 'playerName', 'Adams, Flozell', 11) />
<cfset querySetCell(qAllPlayers, 'team', 'Dallas Cowboys', 11) />
<cfset querySetCell(qAllPlayers, 'playerName', 'Austin, Miles', 12) />
<cfset querySetCell(qAllPlayers, 'team', 'Dallas Cowboys', 12) />
<cfset querySetCell(qAllPlayers, 'playerName', 'Brown, Courtney', 13) />
<cfset querySetCell(qAllPlayers, 'team', 'Dallas Cowboys', 13) />
<cfset querySetCell(qAllPlayers, 'playerName', 'Choice, Tashard', 14) />
<cfset querySetCell(qAllPlayers, 'team', 'Dallas Cowboys', 14) />
<cfset querySetCell(qAllPlayers, 'playerName', 'Colombo, Marc', 15) />
<cfset querySetCell(qAllPlayers, 'team', 'Dallas Cowboys', 15) />
<cfset querySetCell(qAllPlayers, 'playerName', 'Davis, Leonard', 16) />
<cfset querySetCell(qAllPlayers, 'team', 'Dallas Cowboys', 16) />
<cfset querySetCell(qAllPlayers, 'playerName', 'Jones, Felix', 17) />
<cfset querySetCell(qAllPlayers, 'team', 'Dallas Cowboys', 17) />
<cfset querySetCell(qAllPlayers, 'playerName', 'Kitna, Jon', 18) />
<cfset querySetCell(qAllPlayers, 'team', 'Dallas Cowboys', 18) />
<cfset querySetCell(qAllPlayers, 'playerName', 'Procter, Corey', 19) />
<cfset querySetCell(qAllPlayers, 'team', 'Dallas Cowboys', 19) />
<cfset querySetCell(qAllPlayers, 'playerName', 'Romo, Tony', 20) />
<cfset querySetCell(qAllPlayers, 'team', 'Dallas Cowboys', 20) />

<!--- add 10 Eagles players to the "database" --->
<cfset querySetCell(qAllPlayers, 'playerName', 'Akers, David', 21) />
<cfset querySetCell(qAllPlayers, 'team', 'Philadelphia Eagles', 21) />
<cfset querySetCell(qAllPlayers, 'playerName', 'Baskett, Hank', 22) />
<cfset querySetCell(qAllPlayers, 'team', 'Philadelphia Eagles', 22) />
<cfset querySetCell(qAllPlayers, 'playerName', 'Booker, Lorenzo', 23) />
<cfset querySetCell(qAllPlayers, 'team', 'Philadelphia Eagles', 23) />
<cfset querySetCell(qAllPlayers, 'playerName', 'Clemons, Chris', 24) />
<cfset querySetCell(qAllPlayers, 'team', 'Philadelphia Eagles', 24) />
<cfset querySetCell(qAllPlayers, 'playerName', 'Demps, Quintin', 25) />
<cfset querySetCell(qAllPlayers, 'team', 'Philadelphia Eagles', 25) />
<cfset querySetCell(qAllPlayers, 'playerName', 'Feeley, A.J.', 26) />
<cfset querySetCell(qAllPlayers, 'team', 'Philadelphia Eagles', 26) />

<cfset querySetCell(qAllPlayers, 'playerName', 'Hobbs, Ellis', 27) />
<cfset querySetCell(qAllPlayers, 'team', 'Philadelphia Eagles', 27) />
<cfset querySetCell(qAllPlayers, 'playerName', 'Jackson, DeSean', 28) />
<cfset querySetCell(qAllPlayers, 'team', 'Philadelphia Eagles', 28) />
<cfset querySetCell(qAllPlayers, 'playerName', 'Klecko, Dan', 29) />
<cfset querySetCell(qAllPlayers, 'team', 'Philadelphia Eagles', 29) />
<cfset querySetCell(qAllPlayers, 'playerName', 'McNabb, Donovan', 30) />
<cfset querySetCell(qAllPlayers, 'team', 'Philadelphia Eagles', 30) />

<!--- add 10 Redskins players to the "database" --->
<cfset querySetCell(qAllPlayers, 'playerName', 'Alexander, Lorenzo', 31) />
<cfset querySetCell(qAllPlayers, 'team', 'Washington Redskins', 31) />
<cfset querySetCell(qAllPlayers, 'playerName', 'Campbell, Jason', 32) />
<cfset querySetCell(qAllPlayers, 'team', 'Washington Redskins', 32) />
<cfset querySetCell(qAllPlayers, 'playerName', 'Clark, Devin', 33) />
<cfset querySetCell(qAllPlayers, 'team', 'Washington Redskins', 33) />
<cfset querySetCell(qAllPlayers, 'playerName', 'Cooley, Chris', 34) />
<cfset querySetCell(qAllPlayers, 'team', 'Washington Redskins', 34) />
<cfset querySetCell(qAllPlayers, 'playerName', 'Dixon, Antonio', 35) />
<cfset querySetCell(qAllPlayers, 'team', 'Washington Redskins', 35) />
<cfset querySetCell(qAllPlayers, 'playerName', 'Fletcher, London', 36) />
<cfset querySetCell(qAllPlayers, 'team', 'Washington Redskins', 36) />
<cfset querySetCell(qAllPlayers, 'playerName', 'Hackett, D.J.', 37) />
<cfset querySetCell(qAllPlayers, 'team', 'Washington Redskins', 37) />
<cfset querySetCell(qAllPlayers, 'playerName', 'Randle El, Antwaan', 38) />
<cfset querySetCell(qAllPlayers, 'team', 'Washington Redskins', 38) />
<cfset querySetCell(qAllPlayers, 'playerName', 'Smoot, Fred', 39) />
<cfset querySetCell(qAllPlayers, 'team', 'Washington Redskins', 39) />
<cfset querySetCell(qAllPlayers, 'playerName', 'Suisham, Shaun', 40) />
<cfset querySetCell(qAllPlayers, 'team', 'Washington Redskins', 40) />

<cfreturn qAllPlayers />
</cffunction>

<cffunction name="getAllTeams" access="remote" output="false" returntype="query">
<cfset var allPlayers = getAllPlayers() />
<cfset var qGetAllTeams = "" />

<cfquery name="qGetAllTeams" dbtype="query">
SELECT DISTINCT team FROM allPlayers ORDER BY team
</cfquery>

<cfreturn qGetAllTeams />
</cffunction>

最佳答案

我已经在本地盒子中测试了您的代码,它工作正常,代码没有问题。您的情况唯一的问题可能是您启用了 Coldfusion 调试输出,这可能会妨碍您的 json 格式。添加此代码:<cfsetting ShowDebugOutput = "false"/>在生成 json 响应的页面顶部(在本例中为 test.cfm),以禁用 Coldfusion 调试器。测试一下并让我知道你发现了什么。欲了解更多信息,请访问以下网址。 http://www.mindfiresolutions.com/While-working-with-AJAX-ColdFusion-Debugging-may-break-your-Ajax-calls-1477.php

否则,在您的响应页面中一定有一些其他不需要的字符串阻碍了 json 响应

关于jquery - 使用 jquery ajax json 格式,如何将查询从 .cfm 页面输出到调用 html 页面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9220172/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com