Javascript ColdFusion和AJAX-更新数据库

Javascript ColdFusion和AJAX-更新数据库,javascript,jquery,ajax,coldfusion,Javascript,Jquery,Ajax,Coldfusion,我想建立一个系统,用户可以进入一个页面,其中有一个项目列表,他们可以从下拉列表中进行评分(比如,1到5)。这个列表将变得相当长,因此如果他们能够在不必点击“保存”的情况下对每个项目进行浏览和排序,将会更加方便 谈到AJAX,我是一个新手,但我认为这不会那么难。我发现,我认为这是相当相关的,但它并没有提供足够的信息,让我确切地知道如何处理它 简言之,如何使用AJAX与jQuery和ColdFusion相一致,在不需要保存/提交按钮的情况下更新数据库 澄清:我应该澄清,用户可以对项目进行评分,而不是

我想建立一个系统,用户可以进入一个页面,其中有一个项目列表,他们可以从下拉列表中进行评分(比如,1到5)。这个列表将变得相当长,因此如果他们能够在不必点击“保存”的情况下对每个项目进行浏览和排序,将会更加方便

谈到AJAX,我是一个新手,但我认为这不会那么难。我发现,我认为这是相当相关的,但它并没有提供足够的信息,让我确切地知道如何处理它

简言之,如何使用AJAX与jQuery和ColdFusion相一致,在不需要保存/提交按钮的情况下更新数据库

澄清:我应该澄清,用户可以对项目进行评分,而不是排名。这意味着没有#1、#2、#3等。相反,每个项目都可以在1-5的范围内评分

目前,当用户在下拉列表中进行选择时,我将所有内容都基于“.change()”。此时,我有两个jQuery变量,它们被设置为已更改项的“ID”及其新的“评级”。我只需要找到一种方法,使用这两个变量来更新数据库中的表

在主页上更新,我现在有一个简单的jQuery AJAX post调用:
$.post('update.cfc',{ID:inputID,rating:selRat})
,它被触发
.onChange()
。“inputID”是我要在数据库中更新的条目的ID,“selRat”是下拉列表中选择的评级

<cfcomponent output="false">
<cffunction name="updateRating" access="remote" output="false">

    <cfupdate datasource="#session.db#" name="update">
        UPDATE ajaxTest
        SET rating = #FORM.rating#
        WHERE ID = #FORM.ID#
    </cfupdate>

</cffunction>
</cfcomponent>

更新ajaxTest
设置额定值=#FORM.rating#
其中ID=#FORM.ID#
我目前收到
500(内部服务器错误)


想法/建议?

您是否尝试过以传统方式提交此表单以查看结果?您还可以添加一些简单的调试,如写入文件以记录执行的尝试


有一件事对我来说很突出:
你需要某种按钮来改变选项的排名吗?也许一对可以让你在列表中上下移动选项。使用这些按钮上的“单击”事件触发保存。但是,您可能会多次单击以将项目上下移动到多个插槽,从而相互覆盖。在他们进行更改后,他们需要单击“保存”按钮,这样做可能会更好。您走的是正确的道路。查阅关于如何在cold fusion中使用jquery的ajax函数的教程。如果你真的被卡住了,回来问一个具体的问题。好吧,它们只能是我的提示。我不知道CF:-)。这是一条捷径@Steve,但我总是使用charles或firebug或chrome开发工具梳理出浏览器传递的确切url和参数。一旦知道了这一点,调试就更容易了。您还可以暂时将输出false改为true,看看是否可以让CF停止抑制错误。请确保在CF Admin.Side注释中将debug设置为verbose,尽管这不是必需的,但使用命名参数比直接访问表单范围更为典型。通过使用cfargument,您可以利用内置的验证功能。它也使功能更加灵活,因为它不依赖于任何特定的范围。。。我不敢相信我犯了那个错误(用cfupdate而不是cfquery)!另外,感谢您提供有关cfqueryparam、cfqueryparap(相关用户名)的提示。这只是一个测试站点和数据库,但我需要养成一直这样做的习惯。“cfupdate”错误肯定是最初的问题。现在我得到一个POST错误(302临时移动)和一个GET错误(403禁止)。所以,我敢肯定,我又犯了一个愚蠢的错误。@Steve这个.cfc页面在哪里?对于测试,将其放在一个单独的文件夹中,其中包含一个空白的application.cfc,并在您的cfquery中手动填写#session.db#。比如mysite.com/noapp/update.cfc。用这个来开始简单的学习。您还可以使此函数执行某种类型的错误报告。另外,不要为错过cfupdate而感到难过,在我注意到它=P之前,我至少看了你的问题3次。这很有趣。如果有人失踪了,我的大脑就会专注于此。但这突出了为什么它有助于传统的提交,CF会告诉您停止“dat!”:)如果cfupdate解决了所述问题,请将其标记为答案并继续。如果你有后续的问题,把它们放到一个新问题中。
<cfquery datasource="#session.db#" name="update">
    UPDATE ajaxTest
    SET rating = <cfqueryparam cfsqltype="cf_sql_integer" value="#form.rating#">
    WHERE ID = <cfqueryparam cfsqltype="cf_sql_integer" value="#form.id#">
</cfquery>