Jquery ajax表单提交后,来自ckeditor textarea的值不会通过post发送
我有一个表单,有一些文本字段和一个文本区域(ckeditor),点击按钮后,art_title字段值被发送到art_save.php页面,但textarea的值没有发送Jquery ajax表单提交后,来自ckeditor textarea的值不会通过post发送,jquery,ajax,ckeditor,Jquery,Ajax,Ckeditor,我有一个表单,有一些文本字段和一个文本区域(ckeditor),点击按钮后,art_title字段值被发送到art_save.php页面,但textarea的值没有发送 <script src="ckeditor/ckeditor.js"></script> function saveArt() { var title = document.getElementById('art_title'), art_title = title.value;
<script src="ckeditor/ckeditor.js"></script>
function saveArt()
{
var title = document.getElementById('art_title'),
art_title = title.value;
var desc = document.getElementById('art_body'),
art_body = desc.value;
jQuery.ajax({
type: 'POST',
url: 'art_save.php',
data: {
title: art_title,
aut: art_author,
tag: art_tag,
desc: art_body
}
});
return false;
}
函数saveArt()
{
var title=document.getElementById('art_title'),
art_title=title.value;
var desc=document.getElementById('art_body'),
艺术体=描述值;
jQuery.ajax({
键入:“POST”,
url:“art_save.php”,
数据:{
标题:艺术名称,
aut:art_作者,
标签:艺术标签,
描述:艺术身体
}
});
返回false;
}
html部分
<form method="post" name="art" id="art">
<input type="text" id="art_title" name="art_title" placeholder="Here goes your title"/>
<textarea class="ckeditor" name="art_body" id="art_body"></textarea>
<input type="submit" name="savedraft" id="savedraft" onclick="saveArt();return false;" value="Need more Research ! Save as Draft" class="button"/>
</form>
您可以通过以下方式获得html表单编辑器:
var art_body = CKEDITOR.instances.art_body.getData();
您可以使用以下命令强制CKeditor更新textarea值:
for (instance in CKEDITOR.instances) {
CKEDITOR.instances[instance].updateElement();
}
此外,您还可以对数据使用.serialize
,这样,如果参数发生变化,您就不必维护AJAX代码:
<script src="ckeditor/ckeditor.js"></script>
function saveArt()
{
for (instance in CKEDITOR.instances) {
CKEDITOR.instances[instance].updateElement();
}
jQuery.ajax({
type: 'POST',
url: 'art_save.php',
data: $("#art").serialize()
});
return false;
}
函数saveArt()
{
例如(在CKEDITOR.instances中的实例){
CKEDITOR.instances[instance].updateElement();
}
jQuery.ajax({
键入:“POST”,
url:“art_save.php”,
数据:$(“#艺术”).serialize()
});
返回false;
}
这就是我的工作原理:
$.ajax(
{
type: "POST",
url: path+"/html-action",
data: {data1: dataone,
data2: datatwo,
data3: datathree,
data4: datafour,
message: ckeditortxt},
cache: true,
success: function(html)
{
}
}
起初,我使用datastring传递信息,但出于某种原因,保存ckeditor数据的元素没有被视为参数。因此,我将所有参数拆分为单个组件,即data1 data2、data3、data4。。。。这一次,它起作用了I fix在更改时更新了字段值。这是我的代码: HTML:
克菲尔德
JS:
$(函数(){
var$ckfield=CKEDITOR.replace('ckfield');
$ckfield.on('change',function()){
$ckfield.updateElement();
});
});
只需签入JSFIDLE,works文件即可。可能您忘记了一些重要的细节。谢谢,伙计,代码工作了,刚刚添加了(CKEDITOR.instances中的实例){CKEDITOR.instances[instance].updateElement();}现在它的保存文本区域字段值,再次感谢@Carl谢谢你,Carl祝你一切顺利!非常感谢。
$.ajax(
{
type: "POST",
url: path+"/html-action",
data: {data1: dataone,
data2: datatwo,
data3: datathree,
data4: datafour,
message: ckeditortxt},
cache: true,
success: function(html)
{
}
}
<div class="row">
<div class="form-group col-sm-11">
<label for="ckfield">ckfield</label>
<textarea id="ckfield" class="form-control" rows="10" name="ckfield" cols="50"></textarea>
</div>
</div>
<script>
$(function(){
var $ckfield = CKEDITOR.replace( 'ckfield' );
$ckfield.on('change', function() {
$ckfield.updateElement();
});
});
</script>