2012-07-02 79 views
0

我正在使用railo並嘗試通過ajax提交tinymce文本區域。Coldfusion ajax html提交

我的問題是在提交似乎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> 

當我提交表單沒有Ajax的SQL工作正常。

沒有人有任何想法,爲什麼這不會通過ajax提交html格式的文本?

+0

哪裏的SQL代碼? – jcho360

回答

0

所有你需要你提交表單前做的是調用JavaScript線

tinymce.triggerSave() 
0

的幾個問題在這裏:

  1. 我不相信你可以,除非你正在使用CFFORM使用ColdFusion.Ajax.submitForm()或者,除非你使用<cfajaximport ... />導入的JavaScript。你有沒有通過Firebug或Chrome開發工具確認Javascript沒有拋出錯誤?我懷疑它是。將<form ... ></form>標籤更改爲<cfform ...></cfform>,然後重試。

  2. 另外,我不認爲這是去工作,你期待,因爲你有兩種形式,並在同一個文件的形式處理程序邏輯。我會分開他們。

  3. 您正在引用不存在的HomeUpdateReturn返回處理函數。你需要在你的Javascript代碼中編寫這個函數。

你也有一對夫婦的其他問題我不能放過,而不指出:

  1. 您應該範圍的變量。在您的更新查詢中,您有'#homearea#'。這可以引用任何homearea變量,可能不是您期望的表單範圍中的那個。將其更改爲#form.homearea#。這將確保只使用表單範圍中的變量。
  2. 需要在查詢中使用<cfqueryparam ... />否則你會把自己暴露給SQL注入攻擊。因此請將'#homearea#'更改爲<cfqueryparam cfsqltype="cf_sql_longchar" value="#form.homearea#" />。 (假設您的數據庫中使用的是大文本字段)絕不允許未經檢查的用戶輸入直接進入查詢而不使用參數化查詢。
+0

爲了使這個容易看到我只包括那些錯誤可能發生的地方。 – user1496799

+0

我正在使用CFAJAX IMPORT,我創建了HomeUpdateReturn函數,我只是沒有將它包含在上面的代碼中,這些腳本運行在不同的頁面上,而coldfusion.ajax.submitform()在純文本區域 – user1496799