2012-07-02 2 views
0

Я использую railo и пытаюсь отправить текстовую область tinymce через ajax.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> 

Когда я отправить форму без AJAX SQL, работает отлично.

Кто-нибудь есть идеи, почему это не отправит HTML-текст в формате ajax?

+0

где код SQL? – jcho360

ответ

0

Все, что вам нужно сделать, прежде чем отправить форму, чтобы вызвать Javascript линия

tinymce.triggerSave() 
0

Несколько вопросов здесь:

  1. Я не верю, что вы можете использовать ColdFusion.Ajax.submitForm(), если вы не используете cfform или если вы не используете <cfajaximport ... /> импортировать JavaScript. Вы подтвердили с помощью Firebug или инструментов Chrome dev, что 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