如何将ColdFusion中的记录ID传递给JS函数?

4

我试图通过cfm页面传递唯一的数据库会话ID,但似乎无法使其工作。页面1具有记录ID,我正在尝试在recordclick()函数中保存numSession,并将其传递到下一页,在那里我在我的查询中使用它,但它不起作用。

以下是我正在进行的大致概述:

页面1:

<CFQUERY datasource = "database1" result = "result">
insert into user
set
blah blah
</cfquery>

<html>
<head>   
<title>page1</title>
<script type="text/javascript">
function recordClick(imageid)
{
        document.getElementById("numSend").value =       document.getElementById("numSend").value + imageid;
        document.getElementById("numSession").value = result.generated_key;
}
</script>
</head>

<body>
<FORM action="page2.cfm" method="post">

<img src="1.png" NAME="num1" onclick="recordClick(1)"
    width="100px"
    height="100px"> 
<div name="num1" id="num1"></div>

<input type="hidden" id="numSend" name="numSend" />
<input type ="hidden" id = "numSession" name ="numSession" />
<input type="submit" value="Done" />
</form>

</body>
</html>

--------------------------------------

<cfoutput>
The ID of the row I just inserted was "#numSession#"
</cfoutput>


<CFQUERY datasource = "database1">
update user
set
pin = "#numSend#"
where id= "#numSession#"
</cfquery>
1个回答

6

ColdFusion在服务器端执行,JavaScript在客户端执行。你的JS不知道result是什么。

你需要使用ColdFusion的ToScript()函数

说明

创建一个JavaScript或ActionScript表达式,将ColdFusion变量的值赋给JavaScript或ActionScript变量。 此函数可以将ColdFusion字符串、数字、数组、结构和查询转换为JavaScript或ActionScript语法,定义相应的变量和值。

以下是从文档中摘录的示例:

<cfset thisString="hello world">
<script type="text/javascript" language="JavaScript">
    <cfoutput>
        var #ToScript(thisString, "jsVar")#;
    </cfoutput>
</script>

您的代码(已更正):

function recordClick(imageid)
{
    var <cfoutput>#ToScript(result.generated_key, "generated_key")#;</cfoutput>
    var objNumSend = document.getElementById("numSend");
    objNumSend.value = objNumSend.value + imageid;
    document.getElementById("numSession").value = generated_key;
}

谢谢,但是当我尝试在第二个页面输出变量时,似乎不起作用。第二页:<cfoutput> #numSession# </cfoutput> - user1228554
2
你需要提供更具体的信息,不能只说“好像不起作用”。 - James Hill
@user1228554,我已经更新了JS函数,包括<cfoutput>标记。这是否解决了您的问题? - James Hill
它的问题在于第二页,我试图传递numSession,但变量中似乎没有值(记录ID)。因此,它甚至无法打印我尝试传递的会话ID...第2页代码:<cfoutput>刚插入的行的ID为“#numSession#”</cfoutput><CFQUERY datasource = "database1">update user set pin = "#numSend#" where id= "#numSession#"</cfquery> - user1228554
@user1228554,你正在使用表单提交,你是否在输出中使用了表单作用域?你的代码应该像这样:...where id= "#FORM.numSession#" - James Hill
在2018年,这仍然被认为是“最佳实践”还是“代码异味”?我知道仅仅因为我能做到这一点并不意味着我应该... - Janet

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接