2012-09-12 6 views
1

누군가이 코드에 문제가 있다고 말할 수 있는지 궁금 해서요. 작동하지 않아 오류가 발생하지 않습니다.Coldfusion의 HREF 태그에서 Onclick 사용

이 코드를 사용하면 누군가가 링크를 누를 때마다 DB 테이블을 업데이트하는 구성 요소에 액세스하려고합니다.

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

이것은 액세스하려는 구성 요소입니다. 나는 어떤을 받고 있지 않다 링크를 눌러 오전 때 나는 내 <cfajaxproxy> 태그 구문 오류가있을 수 있음을 의심하고

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

하지만 :

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

이 난에서 기능에 액세스를 시도하고있는 곳입니다 오류.

나는 나의 cfajaxproxy

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

로 변경 여전히 기능이 작동하지 않는 것 같습니다. 심지어 같은 폴더에서 구성 요소와 cfm 파일을 옮겼지만 여전히 작동하지 않습니다.

편집 : 이메일 서식 파일에이 코드를 보내고 있음을 잊어 버렸습니다. 그게 무슨 상관이 있는지 나는 모른다. 나는 로컬에서 테스트하고 내 코드가 잘 작동하는 테스트 페이지를 만들었습니다. 그 때문에 변경해야 할 것이 있다면

+0

함수에서 var 범위 지정을 구현해야합니다. 또한 SQL의 WHERE 부분에서 cfqueryparam을 사용하십시오. – duncan

+0

나는 cfqueryparam을 가지고 있었지만 가능한 버그를 배제하기 위해 그것을 제거했다. 나는 var scoping 감사를 들여다 볼 것이다 – Geo

+2

ajax 호출이 전혀 발생하지 않습니까? Firefox의 FireBug 또는 Chrome의 JavaScript 콘솔을 사용하여 요청이 이루어 졌는지 확인해야합니다. –

답변

0

해결책을 찾았습니다. 사용자가 링크를 누르고 페이지가 열릴 때 링크 대신 쿼리가 실행될 때 업데이트 쿼리 코드를 페이지에 직접 넣습니다.

위의 코드는 잘 작동합니다. 전자 메일을 통해 페이지를 사용자에게 전송했기 때문에 문제가있었습니다. 적어도 이것이 내가 의심하는 바입니다.