Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
cfajaxproxy/cfc数据库更新失败_Ajax_Coldfusion_Coldfusion 8_Cfc - Fatal编程技术网

cfajaxproxy/cfc数据库更新失败

cfajaxproxy/cfc数据库更新失败,ajax,coldfusion,coldfusion-8,cfc,Ajax,Coldfusion,Coldfusion 8,Cfc,现在我的一切正常,但我的cfc没有更新数据库。我尝试在cfc页面中更改代码,但这只是在刷新页面进行测试时出现错误。所以我知道它正在调用cfc页面。但是当我点击链接时,除了更新数据库之外,一切都正常。我做错了什么 下面是我想出的代码。这只是赞成票/反对票应用程序中的反对票部分。让这个问题保持简单。我走对了吗?这看起来应该很简单 投票链接 Ajax/cfajaxproxy VoteNo.cfc 编辑“确定”以使每个人都处于最新状态。我删除了查询MemberVote yes,它仍然在上面的代码中。我把

现在我的一切正常,但我的cfc没有更新数据库。我尝试在cfc页面中更改代码,但这只是在刷新页面进行测试时出现错误。所以我知道它正在调用cfc页面。但是当我点击链接时,除了更新数据库之外,一切都正常。我做错了什么

下面是我想出的代码。这只是赞成票/反对票应用程序中的反对票部分。让这个问题保持简单。我走对了吗?这看起来应该很简单

投票链接

Ajax/cfajaxproxy

VoteNo.cfc

编辑“确定”以使每个人都处于最新状态。我删除了查询MemberVote yes,它仍然在上面的代码中。我把它放在这里让大家看看,只是为了避开这个错误,看看NewCount在添加cfc.NewCounttrue之后是如何工作的,就像orangepips建议的那样。我得到的是这个;它确实更新了数据库并显示了NewCount,就像它假设的那样。但一秒钟后,页面变白,我所拥有的只是左上角显示的NewCount

萤火虫什么也看不出来,我的意思是什么也不是空白。没有HTML,CSS,根本没有代码。不知怎的,ajax刷新了,只显示了NewCount,页面表现得好像在试图隐藏什么。我是不是忘了添加一些东西来防止刷新,还是其他什么东西


我需要解决这个新问题,并让它将成员投票添加到MemberVote查询中的数据库中。有什么想法吗?

在没有看到实际错误的情况下,我猜您的问题在于使用与函数相同的非范围变量名。而不是把它放在参数标签后面。 然后在以后的代码中使用countNew变量

还有一件事…请,please,please在传递变量时在查询中使用cfqueryparam。这可以保护您免受sql注入攻击并提高性能。例如:

<CFQUERY NAME="NoCountCK" DATASOURCE="MyDSN">
SELECT *
FROM Ideas
WHERE IdeaID = <cfqueryparam value="#arguments.VoteNo#">
</CFQUERY>

首先,我认为您从未在MyCFC组件中调用NewCount函数。正如cfajaxproxy文档所示http://livedocs.adobe.com/coldfusion/8/htmldocs/help.html?content=Tags_a-在b_3.html中,调用cfajaxproxy,初始化JavaScript对象,并调用该对象上的方法。因此,在您的示例中,它将是cfc.NewCounttrue注意,在cfc.setCallbackHandlergetDataResult;之后,它区分大小写

接下来,使用Firefox进行自我检查。这将允许您轻松地处理JavaScript错误和AJAX请求。加载正在运行Firebug的页面。检查Firebug控制台的JavaScript错误。如果它抱怨找不到库cfajax.js,那么您可能需要设置一个到CFIDE目录的web服务器映射,ColdFusion将保存它附带的各种JavaScript文件


最后,单击投票按钮。检查Firebug中的AJAX请求以查看是否触发了某些内容。查看响应代码是什么。不是200?在Firebug控制台中打开请求以查看响应HTML。您可以右键单击响应以在新浏览器选项卡中打开

好,我修复了文档。通过替换以下内容重写整个DOM:

    document.write(result) 
用这个

    var content = document.getElementById('NewCount').innerHTML=result; 

这似乎使更改保持在正确的范围内。我让cfc做了一些事情,只是为了看看它是否被调用。不用担心,Sam,我总是在所有查询中使用cfqueryparam。只是没有将它们放在我的示例中,因为我希望代码保持简单,以便有人能够看到我做错了什么。我加入了NewCount变量,解决了在数据库中更新计数的问题,但这就是它的工作范围。查询插入仍不起作用。我将尝试一些不同的方法,看看是否可以做对一些事情;这确实解决了更新数据库中的计数的问题,但这就是它的工作范围。查询插入仍不起作用。我现在得到一个“执行数据库查询时出错”错误。我要玩玩它,我可能会走运的。如果您看到什么,请让我知道。我更新了上面的代码,并添加了现在的情况。在我看来,MemberVote cfquery调用缺少N周围的单引号,N是最后插入的值。另外,你是否得到了异常日志?是的,但这不是问题所在。当我改变名字时,我觉得一切都很好。我还更改了document.write到var content=document.getElementById'NoCount'。innerHTML=result;这阻止了它覆盖我的域名你能去看看吗http://stackoverflow.com/questions/3910945/how-to-pass-an-onclick-link-value-to-javascript-and-cfc-though-cfajaxproxy,看看你是否知道该怎么办?
<CFQUERY NAME="NoCountCK" DATASOURCE="MyDSN">
SELECT *
FROM Ideas
WHERE IdeaID = <cfqueryparam value="#arguments.VoteNo#">
</CFQUERY>
    document.write(result) 
    var content = document.getElementById('NewCount').innerHTML=result;