我正在尝试在选择框的值更改时设置coldfusion会话变量。但是,我在警告框中收到错误,说“对象HTMLSelectElement”并且没有更改会话变量。任何帮助都会很棒。
代码:
Form.cfm
<cfset session.item1 = 0>
<cfselect name="item1" class="form-control" id="item1">
<option value="0">0</option>
<option value="10">10</option>
<option value="20">20</option>
<option value="30">30</option>
<option value="40">40</option>
<option value="50">50</option>
</cfselect>
脚本
$('#item1').change( function() {
var item1Selected = $('#item1').val();
$.ajax({
url: '\components.cfc?method=getItem1', // You repeated "url:" in your url
data: {item1: item1Selected}, // added missing final comma
success: function(item1Selected) { alert(item1); }
});
});
Components.cfc
<cffunction name="getItem1" access="remote" returntype="any">
<cfargument name="item1" type="any" required="yes">
<cfset session.item1 = #argument.item1#>
<cfreturn />
</cffunction>
答案 0 :(得分:2)
改变这个:
<cfset session.item1 = #argument.item1#>
到此:
<cfset session.item1 = arguments.item1>
正确的范围是参数,即参数的复数。另外,你不需要英镑符号。
与您的问题无关,但如果您的CF代码仅使用CF工作,则此类故障排除变得更加容易。
答案 1 :(得分:1)
(评论太长)
除了Dan's comments about the error in the CFFunction之外,还有其他两个可能阻止代码按预期运行的问题:
您的var regExp = /^.*(youtu.be\/|v\/|u\/\w\/|embed\/|watch\?v=|\&v=|\?v=)([^#\&\?]*).*/;
函数将响应变量定义为success()
。通过使用alert(item1Selected
),您实际上显示的是item1
元素,而不是来自ajax调用的响应。
<select>
实际上并没有返回任何内容,即cffunction
因此,即使您修改了变量名,响应也将是未定义的或空白的。不需要返回响应。但是,如果您确实想要将某种数据返回到<cfreturn />
,则需要修改该函数以返回某些内容(JSON,等等)。