JQuery数据未正确发送到CFC

JQuery数据未正确发送到CFC,jquery,coldfusion,cfc,Jquery,Coldfusion,Cfc,所以,就我的一生而言,我不明白为什么我的CFC函数没有运行……firefug说它运行,但什么也没发生 <cffunction name="deleteRequest" access="remote" returntype="void"> <cfargument name="id" type="numeric" required="yes"> <cfquery name = "deleteRequests" datasource = "#app

所以,就我的一生而言,我不明白为什么我的CFC函数没有运行……firefug说它运行,但什么也没发生

   <cffunction name="deleteRequest" access="remote" returntype="void">
    <cfargument name="id" type="numeric" required="yes">

    <cfquery name = "deleteRequests" datasource = "#application.dsn#">
    DELETE FROM requests
    WHERE ID = <cfqueryparam cfsqltype="cf_sql_numeric" value = "#id#">
    </cfquery>

    <cfreturn>
</cffunction>
jquery正在工作…它正在发送它,并且应该已经到达了那里…但是什么都没有发生。我测试了CFC并手动调用了它,它运行正常。我猜这与我的变量有关。我想可能id需要parseInt(),但这也没用

它所要做的就是从数据库中删除条目。我做错了什么

*很抱歉问这么简单的问题。我在JQUERY+CFC方面遇到了很多麻烦…我一直在寻找好的教程…但我似乎从来没有找到好的初学者教程

更新:尝试更改url以在其中包含方法参数,并更改了对public的访问权限…结果仍然相同。

请尝试:

<cffunction name="deleteRequest" access="public" returntype="void">

    <cfquery name = "deleteRequests" datasource = "#application.dsn#">
    DELETE FROM requests
    WHERE ID = <cfqueryparam cfsqltype="cf_sql_numeric" value = "#id#">
    </cfquery>

<cfreturn>
</cffunction>

 $("input[name=delete]").click(function(){
    var z = deleteRequest($(this).attr("id")); 
    var y = $(this).attr("id");
    if(z){
    $.ajax({
    type: 'POST',
    url: '/cfc/request.cfc?method=deleteRequest',
    data: {id: y}
    });
    } 
 }); 

  function deleteRequest(id){
    var x = confirm("Are you SURE you want to DELETE this?");
    if(x){return 1;}
    return 0;
  }

从请求中删除
其中ID=
$(“输入[name=delete]”。单击(函数(){
var z=deleteRequest($(this.attr(“id”));
var y=$(this.attr(“id”);
如果(z){
$.ajax({
键入:“POST”,
url:'/cfc/request.cfc?方法=deleteRequest',
数据:{id:y}
});
} 
}); 
函数deleteRequest(id){
var x=确认(“您确定要删除此项吗?”);
如果(x){返回1;}
返回0;
}

我们在应用程序中大量使用这种类型的调用,几乎没有什么麻烦。查看代码,我们倾向于使用dknaack建议的样式,URL中有方法名,但数据作为参数提供。 您是否尝试过使用Fiddler(fiddler2.com)拦截调用,以确保它确实在调用您的代码。
除此之外,我会在你的方法中使用
来记录传递的内容,如果你已经设置好使用调试器,我会使用调试器。

我认为你需要用“public”而不是“remote”来标记你的函数。。。请试试这个。。更多信息=>将其设置为公用不起作用:(另外,我还认为ajax应该设置为remote?(我还尝试将这两种解决方案结合起来,也没有成功。)没有帮助?可能是个愚蠢的问题,但是。你的cfc在webfolder中,而不是customtags中?它实际上在名为/cas/resourcerequest/dev/cfc/request.cfc的web文件夹中,但我编辑了该信息。Firebug说它找到了该页面,所以我认为这不是问题所在(我的代码实际上有/cas/resourcerequest/dev/cfc/request.cfc作为url)遗憾的是,我认为我没有访问日志目录的权限……我没有维护我们的服务器。:|我会调查fiddler。fiddler和firebug的区别是什么?fiddler和firebug的区别是,fiddler是一个单独的调试代理,这意味着你可以同时为IE、Chrome和FF运行它。任何支持代理的程序s可以通过它来使用(包括
),它有一些非常强大的功能来检查请求和响应。它每天都可以节省我的时间:)你在使用Firebug(或类似产品)吗要检查发送到CFC的POST数据?或者,您是否在CFC内的表单作用域上尝试了cfdump/cfabort,以查看jQuery的结果?我已经完成了firebug…它说它正在发布正确的数据id=299和方法参数。我还没有成功地让CFC转储任何内容。(这几乎像是忽略了它。)将其更改为?method=deleteRequest and public后会得到相同的结果。虽然如果我调用它,它会工作,但jquery调用不会。您认为这可能是某种服务器设置吗?
<cffunction name="deleteRequest" access="public" returntype="void">

    <cfquery name = "deleteRequests" datasource = "#application.dsn#">
    DELETE FROM requests
    WHERE ID = <cfqueryparam cfsqltype="cf_sql_numeric" value = "#id#">
    </cfquery>

<cfreturn>
</cffunction>

 $("input[name=delete]").click(function(){
    var z = deleteRequest($(this).attr("id")); 
    var y = $(this).attr("id");
    if(z){
    $.ajax({
    type: 'POST',
    url: '/cfc/request.cfc?method=deleteRequest',
    data: {id: y}
    });
    } 
 }); 

  function deleteRequest(id){
    var x = confirm("Are you SURE you want to DELETE this?");
    if(x){return 1;}
    return 0;
  }