2012-09-12 27 views
1

我想知道是否有人能告訴我這段代碼有什麼問題,因爲它不起作用,它也不會給我任何錯誤。在Coldfusion的HREF標籤上使用Onclick

通過此代碼,我試圖訪問每次有人按下鏈接時更新數據庫表的組件。

<cfajaxproxy bind="url:http://www.example.com/admin/CRM/linktracking.cfc" /> 
<cfscript> 
    SSLtype = (CGI.HTTPS EQ 'off')?'http://':'https://'; 
</cfscript> 

<cfset domainname = CGI.SERVER_NAME> 
<cfset domainURL = SSLtype&CGI.SERVER_NAME&CGI.SCRIPT_NAME&'?'&CGI.QUERY_STRING> 

    <script>  
     function insertTracking(href) { 
     var instance = new ajaxjsclass(); 
     instance.setCallbackHandler(); 
     <cfoutput> 
      instance.insertTrack(href,'#surveymain.contactid#','#domainname#','#domainURL#'); 
     </cfoutput> 
     }  
    </script> 

這是我試圖訪問的組件。

<cfcomponent> 

<cffunction name="insertTrack" access="remote" returntype="void" > 
<cfargument name="clickedURL" required="yes"> 
<cfargument name="contactid" required="yes"> 
<cfargument name="domainName" required="yes"> 
<cfargument name="domainURL" required="yes"> 

<cfquery name="q_inserttrack" datasource="dpsigweb"> 
update survey_tracking 
set surveystarted = <cfqueryparam value="#now()#" cfsqltype="CF_SQL_TIMESTAMP"> 
where contactid= '#contactid#' 
</cfquery> 


<cfif ARGUMENTS.contactid NEQ ''> 
    <cfscript> 
     additionalInfo = '<b>Clicked URL</b> - <i>#ARGUMENTS.clickedURL#</i><br><br><b>From Site</b> - <i>#ARGUMENTS.domainURL#</i>'; 
     gaCFC = CreateObject("component","mod_sigweb.components.guestaccount"); 
     gaCFC.AddCorrespondenceCurDoctorProcedureRemote(
      functionPassword = 'password', 
      contactid = '#ARGUMENTS.contactid#', 
      theMessage = additionalInfo, 
      statustype = 'Survey Started', 
      contactresult ='Survey Started' 
      ); 
    </cfscript> 
</cfif> 

</cffunction> 
</cfcomponent> 

這是我想從進入功能:

<a href="http://dev.example.com/surveys/survey.cfm?id=#id#&contactid=#contactid#&doctorid=#doctorid#" onClick="insertTracking(this.href)" > 

我懷疑我的<cfajaxproxy>標籤可能有語法錯誤,但是當我按我沒有得到任何的聯繫錯誤。

更改我的cfajaxproxy這個

<cfajaxproxy cfc="linktracking" jsclassname="ajaxjsclass" /> 

,但仍是功能似乎並沒有工作。我甚至將組件和cfm文件移動到同一個文件夾中,但它仍然不起作用。

編輯: 我忘了提及我在電子郵件模板中發送此代碼。我不知道這是否有任何問題。我創建了一個測試頁,我在本地測試,我的代碼工作正常。如果有什麼我需要改變,因爲請讓我知道

+0

你應該在你的函數中實現var作用域。也可以在SQL的WHERE部分使用cfqueryparam。 – duncan

+0

我使用了cfqueryparam,但爲了排除可能的錯誤,我把它關閉了。我會研究var範圍,謝謝 – Geo

+2

你看到ajax調用發生了嗎?在Firefox中使用FireBug或在Chrome中使用JavaScript控制檯,您至少應該看看是否有請求。 –

回答

0

找到解決方案。我將更新查詢代碼直接放在頁面上,這樣當用戶按下鏈接並打開頁面時,查詢就會從鏈接中運行。

上面的代碼工作正常我只是有問題,因爲我通過電子郵件發送頁面給用戶。至少這是我懷疑的。