2012-07-02 3 views
0

저는 railo를 사용하고 아약스를 통해 주석 텍스트 영역을 제출하려고합니다.Coldfusion ajax html submit

내 문제는 제출시 html이 제거되고 sql이 실제로 업데이트되지 않은 것 같습니다. 나는 아약스없이 양식을 제출하면

function UpdateHome() { 
    document.getElementById('UpdateProcessing').style.display = ''; 
    document.getElementById('HomeForm').style.display = 'none'; 
    ColdFusion.Ajax.submitForm("HomeForm","action.cfm",HomeUpdateReturn); 
    } 

<form action="action.cfm" method="post" id="HomeForm"> 
<input type="hidden" name="action" value="HomeUpdate" /> 
<CFLOOP QUERY="FetchHome"> 
<textarea id="HomeArea" name="HomeArea" class="tinymce" rows="20" cols="20" 
style="width:100%; height:500px" >#Body#</textarea> 
</CFLOOP> 
<input type="button" class="HomeSubmit" value="Save" onClick="UpdateHome();" /> 
</form> 

<CFQUERY NAME="UpdateHome"> 
UPDATE Content 
SET Body = '#HomeArea#' 
WHERE ID = 1 
</CFQUERY> 

<CFSET UdateHome  = ArrayNew(1)> 
<CFSET UpdateHome[1]  = true> 
<CFCONTENT TYPE="application/json" RESET="true"> 
<CFOUTPUT>#serializeJSON(UpdateHome)#</CFOUTPUT> 

은 SQL 잘 작동 :

여기 내 코드입니다.

누구나 아약스를 통해 HTML 형식의 텍스트를 제출하지 않는 이유는 무엇입니까? 여기

+0

호출하는 것입니다? – jcho360

답변

0

당신이 양식을 제출하기 전에해야 할 모든 자바 스크립트 라인 SQL 코드가

tinymce.triggerSave() 
0

몇 가지 문제 :

  1. 난 당신이 자바 스크립트를 가져올 <cfajaximport ... />를 사용하지 않는 한 당신은 당신이는 cfform을 사용하지 않는 ColdFusion.Ajax.submitForm()를 사용하거나 수 있다고 생각하지 않습니다. Firebug 또는 Chrome 개발자 도구를 통해 Javascript에서 오류가 발생하지 않았 음을 확인 했습니까? 나는 그것이 의심 스럽다. <form ... ></form> 태그를 <cfform ...></cfform>으로 변경하고 다시 시도하십시오.

  2. 또한 같은 파일에 양식과 양식 처리기 논리가 모두 있기 때문에 예상대로 작동하지 않을 것이라고 생각합니다. 나는 그들을 분리 할 것이다.

  3. 존재하지 않는 HomeUpdateReturn 리턴 핸들러 함수를 참조하고 있습니다. 이 함수는 자바 스크립트 코드로 작성해야합니다.

    1. 당신이해야 범위 당신의 변수 :

    은 또한 그냥 지적하지 않고 통과 할 수없는 몇 가지 다른 문제가 있습니다. 업데이트 쿼리에 '#homearea#'이 있습니다. 이 변수는 homearea 변수를 참조 할 수 있으며 사용자가 예상하는 양식 범위의 변수가 아닐 수 있습니다. 이것을 #form.homearea#으로 변경하십시오. 이렇게하면 양식 범위의 변수 만 사용됩니다.

  4. <cfqueryparam ... />을 쿼리에 사용하려면이 필요합니다. 그렇지 않으면 SQL 주입 공격에 노출 될 수 있습니다. 따라서 '#homearea#'<cfqueryparam cfsqltype="cf_sql_longchar" value="#form.homearea#" />으로 변경하십시오. 데이터베이스에서 가정하면 큰 텍스트 필드를 사용합니다. 매개 변수가있는 쿼리를 사용하지 않고 검사되지 않은 사용자 입력이 쿼리에 직접 들어가는 것을 허용하지 않습니다.
+0

쉽게 볼 수 있도록하기 위해 오류가있는 부분 만 포함 시켰습니다. – user1496799

+0

CFAJAX IMPORT를 사용 중입니다. HomeUpdateReturn 함수를 만들었습니다. 위 코드에이 스크립트를 포함시키지 않았습니다.이 스크립트는 별도의 페이지에서 실행되고 coldfusion.ajax.submitform()은 일반 텍스트 영역에서 잘 작동합니다. – user1496799