2011-07-19 59 views
0

因此,對於我的生活,我無法弄清楚爲什麼我的CFC功能沒有運行...... firefug說它運行,但沒有任何反應。JQuery數據沒有正確發送到CFC

<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有很多麻煩......我一直在尋找優秀的教程......但我似乎永遠找不到任何好的初學者。

更新:嘗試更改網址,使其中的方法參數,並改變訪問公共...仍然是相同的結果。

+0

你使用Firebug(或類似的)來檢查發送到CFC的POST數據嗎?或者,您是否在CFC內部的表單範圍上嘗試了一個cfdump/cfabort,以查看jQuery中發生了什麼? – Jason

+0

我已經完成了螢火蟲......它表示它發佈了正確的數據ID = 299和方法參數。我還沒有成功讓cfc轉儲任何東西。 (它幾乎就像忽略它。)將其更改爲?method = deleteRequest和public後的結果相同。雖然它可以工作,如果我調用它,只是不與jQuery的調用。你認爲這可能是某種服務器設置? – Bri

回答

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

已經這樣做了。不行。 :( – Bri

+0

我認爲你需要用「公開」而不是「遠程」來標記你的功能...請試試這個..更多信息=> http://blog.nitorsys.com/ajax-call-to-coldfusion-使用jquery/ – dknaack

+0

將它設置爲公共無效(另外,我認爲它應該設置爲遠程?(我也嘗試將這兩種解決方案結合使用,但都不行)。 – Bri

0

我們在毫不費力的應用相當大量使用通話的這一風格。查看代碼,我們傾向於使用建議的風格dknaack,方法名稱在URL中,但數據作爲參數提供。 您是否嘗試過使用Fiddler(fiddler2.com)攔截電話以確保它絕對是您的代碼。 除此之外,我會在您的方法中使用<CFLOG>來記錄它傳遞的內容,或者如果您設置了調試器來使用它。

+0

不幸的是,我不認爲我有權訪問日誌目錄...我不維護我們的服務器。 :|我會看着小提琴手。 – Bri

+0

提琴手和螢火蟲之間有什麼區別? – Bri

+0

Fiddler和FireBug的不同之處在於Fiddler是一個獨立的調試代理,意味着您可以同時爲IE,Chrome和FF運行它。任何支持代理的程序都可以通過它來使用(包括''),並且它有一些非常強大的功能來檢查請求和響應。它每天保存我的培根:) – barnyr

相關問題