JQuery数据未正确发送到CFC

时间:2011-07-19 14:30:56

标签: jquery coldfusion cfc

所以对于我的生活,我无法弄清楚为什么我的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 / JavaScript的:

        $("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',
        data: {id: y, method: "deleteRequest"}
        });
        } 
     }); 

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

jquery正在工作......它正在发送它,并且据说到了那里......但没有任何反应。我测试了CFC并手动调用它并且它可以工作。我猜这与我的变量有关。我想也许id需要parseInt(),但这也无济于事。

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

*对不起这个简单的问题。我在JQUERY + CFC上遇到了很多麻烦......我一直在寻找好的教程......但我似乎永远都找不到好的初学者。

更新:尝试更改网址以在其中包含方法参数并将访问权限更改为公开...仍然是相同的结果。

2 个答案:

答案 0 :(得分:1)

请尝试:

<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;
  }

答案 1 :(得分:0)

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