Javascript 将表单中的输入传递到Coldfusion查询
您好,我正在尝试将一个变量的值从表单输入传递到查询,以检索一个值并将其作为隐藏值传递回表单。非常混乱,我希望我想得太多了。我得到一个通过的批次号是未定义的错误 以下是我目前掌握的代码:Javascript 将表单中的输入传递到Coldfusion查询,javascript,coldfusion,coldfusion-2016,Javascript,Coldfusion,Coldfusion 2016,您好,我正在尝试将一个变量的值从表单输入传递到查询,以检索一个值并将其作为隐藏值传递回表单。非常混乱,我希望我想得太多了。我得到一个通过的批次号是未定义的错误 以下是我目前掌握的代码: <CFOUTPUT> <cfquery name = "OutputDetails" datasource = "#Application.PrimaryDataSource#"> SELECT ShippingAdviceID FROM Shi
<CFOUTPUT>
<cfquery name = "OutputDetails" datasource = "#Application.PrimaryDataSource#">
SELECT ShippingAdviceID
FROM ShippingAdvice
WHERE CustomerID = #Passed_CustomerID#
AND LotNumber = #Passed_Lot_Number#
</cfquery>
<td align="left" colspan="1">
<input class="frm3" type="text" id="Outstanding_Passed_LotNumber" size="3" maxlength="6" tabindex="25">
<form name="Show_SampleLogSheet" class="frm" action="/Buying/Shipping_Advice/Index.cfm" method="post">
<input type="hidden" name="Passed_CustomerID" value="#Passed_CustomerID#">
<input class="frm3" type="text" name="Passed_Lot_Number" size="3" maxlength="6" tabindex="25">
</form>
</td>
</CFOUTPUT>
请原谅,这段代码真的很旧,我的任务是为它添加更多的功能。我真的很感谢你的帮助
多谢各位
编辑:
以下是一些更新的代码:
<CFOUTPUT>
<td align="left" colspan="1">
<input class="frm3" type="text" id="Outstanding_Passed_LotNumber" size="3" maxlength="6" tabindex="25" style="background-color: ##838383;border:1px solid ##000000; color:white">
<form name="Show_SampleLogSheet" class="frm" action="/Buying/Shipping_Advice/Index.cfm" method="post" style="display: inline">
<input type="hidden" name="Passed_CustomerID" value="#Passed_CustomerID#">
<input class="frm3" type="text" name="Passed_Lot_Number" size="3" maxlength="6" tabindex="25">
<cfif structKeyExists(form, "Passed_Lot_Number ")>
<cfquery name = "OutputDetails" datasource = "#Application.PrimaryDataSource#">
SELECT ShippingAdviceID
FROM tblShippingAdvice
WHERE CustomerID = #Passed_CustomerID#
AND LotNumber = #Passed_Lot_Number#
<cfreturn Passed_ShippingAdviceID />
</cfquery>
</cfif>
<input type="hidden" name="Passed_ShippingAdviceID" value="#Passed_ShippingAdviceID#">
</form>
</td>
</CFOUTPUT>
首先,您已检查此条件structKeyExistsform,传递了批次号。这意味着,在提交表单后,将执行条件代码的内部 但是,您已经给出了不必提交按钮的代码。请添加提交按钮 提交表单后,我们可以获得表单字段值,如下所示
form.Passed_CustomerID and form.Passed_Lot_Number
你必须把代码放在标签后面
我添加了一个代码。希望这会有所帮助
<cfoutput>
<cfparam name="Passed_ShippingAdviceID" default="0">
<cfif structKeyExists(form, "submit")>
<cfquery name = "OutputDetails" datasource = "#Application.PrimaryDataSource#">
SELECT ShippingAdviceID
FROM tblShippingAdvice
WHERE CustomerID = "#form.Passed_CustomerID#"
AND LotNumber = "#form.Passed_Lot_Number#"
</cfquery>
<cfset Passed_ShippingAdviceID = OutputDetails.ShippingAdviceID>
</cfif>
<form name="Show_SampleLogSheet" class="frm" action="/Buying/Shipping_Advice/Index.cfm" method="post" style="display: inline">
<input class="frm3" type="text" id="Outstanding_Passed_LotNumber" size="3" maxlength="6" tabindex="25" style="background-color: ##838383;border:1px solid ##000000; color:white">
<input type="hidden" name="Passed_CustomerID" value="#Passed_CustomerID#">
<input class="frm3" type="text" name="Passed_Lot_Number" size="3" maxlength="6" tabindex="25">
<input type="hidden" name="Passed_ShippingAdviceID" value="#Passed_ShippingAdviceID#">
<input type="submit" value="submit" name="submit">
</form>
</cfoutput>
谢谢,所以我终于解决了这个问题。原来我想的不对。另一个在做某事之前理解数据流的完美例子。结果表明,数据总共传递了3页。它从客户端->界面页面->显示结果。表单提交到接口页面,然后我添加了定义传递的\u ShippingAdviceID变量的逻辑。以下是更新后的表格代码:
<td align="left" colspan="1">
<input class="frm3" type="text" id="Outstanding_Passed_LotNumber" size="3" maxlength="6" tabindex="25" style="background-color: ##838383;border:1px solid ##000000; color:white">
<form name="Show_SampleLogSheet" class="frm" action="/Interface Page" method="post" style="display: inline">
<input type="hidden" name="Passed_CustomerID" value="#Passed_CustomerID#">
<input class="frm3" type="text" name="Passed_Lot_Number" size="3" maxlength="6" tabindex="25">
<input type="hidden" value="1" name="Passed_Activate">
<input type="hidden" value ="" name = "Passed_ShippingAdviceID">
</form>
</td>
评论不用于扩展讨论;这个对话已经结束。别忘了在cfparam@G.Rose中包含预期的变量范围-要清楚,代码根本不应该使用。cfreturn仅在代码位于cffunction内部时使用。是否在不提交的情况下执行此操作?表单应在按enter键时提交是的,我们可以这样做。在按键时,我们需要调用JS函数,在该函数中需要提交表单。但是,我不确定我们在按键时是否需要这个。因为,每次按键都会调用JS函数。请不要提倡将直接的表单变量放入查询中。即使只是复制原始代码。至少,把这些变量放在一个cfqueryparam中。@Steve你建议我在这个例子中如何使用它?打破一切意味着什么?如果您是通过表单传递Passed\u ShippingAdviceID,而不是cfif Passed\u ShippingAdviceID,则应该检查表单结构。我认为您可能会选择与您似乎想要设置的某些变量名称相同的默认变量值。此外,为什么您对未完成的\u Passed\u LotNumber的输入超出了表单标记的范围?对于cfqueryparam,您可以使用类似CustomerID=。如果数据库列CustomerID不是整数数据类型,则需要更改cfsqltype属性。查看Steve的链接。创建一个cfm页面,其中只包含一个查询,以检查批号是否存在。然后使用jquerypost来确定要做什么。可能类似于$.post'checkLotNo.cfm',{lotNumber:$'Passed_Lot_Number'.val},functiondata{if!data.exists{//codeToAlertUser},'JSON';。您必须确定何时从您的表单中触发该调用。你必须处理注射问题。
<cfif Passed_ShippingAdviceID IS "">
<cfquery name = "OutputDetails" datasource = "#Application.PrimaryDataSource#">
SELECT ShippingAdviceID
FROM tblShippingAdvice
WHERE CustomerID = '#Passed_CustomerID#'
AND LotNumber = '#Passed_Lot_Number#'
</cfquery>
<cfset Passed_ShippingAdviceID = OutputDetails.ShippingAdviceID>
</cfif>