通过带有Coldfusion的Ajax使用选择框设置会话变量

通过带有Coldfusion的Ajax使用选择框设置会话变量,ajax,coldfusion,Ajax,Coldfusion,我试图在选择框的值更改时设置coldfusion会话变量。但是,我在一个警告框中看到一个错误,上面写着“Object HTMLSelectElement”,并且没有更改会话变量。任何帮助都会很好 代码: Form.cfm <cfset session.item1 = 0> <cfselect name="item1" class="form-control" id="item1"> <option value="0">0</option&

我试图在选择框的值更改时设置coldfusion会话变量。但是,我在一个警告框中看到一个错误,上面写着“Object 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>
组件.cfc

<cffunction name="getItem1" access="remote" returntype="any">
        <cfargument name="item1" type="any" required="yes">
        <cfset session.item1 = #argument.item1#>

        <cfreturn />
</cffunction>

更改此选项:

<cfset session.item1 = #argument.item1#>

为此:

<cfset session.item1 = arguments.item1>

正确的范围是参数,参数的复数形式。另外,你不需要英镑符号

与您的问题无关,但如果您仅使用CF使CF代码正常工作,则此类故障排除会变得容易得多。

更改此选项:

<cfset session.item1 = #argument.item1#>

为此:

<cfset session.item1 = arguments.item1>

正确的范围是参数,参数的复数形式。另外,你不需要英镑符号

与您的问题无关,但如果您仅使用CF使CF代码正常工作,则此类故障排除会变得容易得多。

(注释太长)

此外,还有两个其他问题可能会阻止代码按预期运行:

  • 您的
    success()
    函数将响应变量定义为
    item1Selected
    。通过使用alert(
    item1
    ),实际上显示的是
    元素,而不是来自ajax调用的响应

  • cffunction
    实际上不返回任何内容,即
    ,因此即使修复变量名,响应也将是未定义的或空白的。不需要返回响应。但是,如果确实希望将某种类型的数据返回到
    success()
    ,则需要修改函数以返回某些内容(JSON等)

  • (评论太长)

    此外,还有两个其他问题可能会阻止代码按预期运行:

  • 您的
    success()
    函数将响应变量定义为
    item1Selected
    。通过使用alert(
    item1
    ),实际上显示的是
    元素,而不是来自ajax调用的响应

  • cffunction
    实际上不返回任何内容,即
    ,因此即使修复变量名,响应也将是未定义的或空白的。不需要返回响应。但是,如果确实希望将某种类型的数据返回到
    success()
    ,则需要修改函数以返回某些内容(JSON等)


  • 我不确定在ajax调用中作为数据传递item1是否会作为参数传递给CF。我会将“&item1=”+item1Selected附加到url的末尾,并删除数据元素。否则,您将不得不在函数中使用getHTTPRequestData并反序列化数据。我不确定在ajax调用中作为数据传递item1是否会作为参数传递给CF。我会将“&item1=”+item1Selected附加到url的末尾,并删除数据元素。否则,您必须在函数中使用getHTTPRequestData并反序列化数据。仅在这些行中使用CF,您可以在浏览器中测试“远程”函数:
    http://yourserver/yourcomponent.cfc?method=yourMethod¶m1=blahblah
    。如果它抛出一个错误,您就知道它在jQuery中也无法工作。仅在这些行中使用CF,您就可以在浏览器中测试“远程”函数:
    http://yourserver/yourcomponent.cfc?method=yourMethod¶m1=blahblah
    。如果它抛出一个错误,那么您知道它在jQuery中也无法工作。