我正在为Joomla 3.0开发一个自定义组件,并在我的一个视图中使用编辑器字段。我使用纯HTML和JS开发我的视图,而不是使用Joomla XML Structure。我已成功加载并使用编辑器字段,但是当我使用ajax将表单数据发布到我的控制器时,编辑器字段未显示,或者为空。
如何使用ajax将编辑器的内容发布到我的控制器?
表格代码 -
<form id="servicecategory-form" name="servicecategory-form" enctype="multipart/form-data">
...
<!-- description editor-->
<div class="control-group">
<label class="control-label">
<a href="#" data-toggle="tooltip" title="Description">
Description
</a>
</label>
<div class="controls">
<?php
$editor = JFactory::getEditor();
echo $editor->display('description', '', '270', '300', '50', '10',false);
?>
<p class="help-block"></p>
</div>
</div>
...
</form>
Javascript代码 -
function saveServiceCategory() {
var form = jsn('#servicecategory-form');
var formData = form.serialize();
jsn.ajax({
type: 'POST',
url: 'index.php?option=com_centrilliontech_helloworld&task=custom.saveData&tmpl=component&format=raw',
cache: false,
data: formData,
beforeSend: function() {
jsn('#loading-modal').modal('show');
console.log('beforeSend');
}
})
.success(function(response) {
var value = jQuery.parseJSON(response);
if (value.error) {
alertBar('alert-error', 'Service Category', 'Error');
} else {
alertBar('alert-info', 'Service Category', value.message);
}
})
.complete(function() {
jsn('#loading-modal').modal('hide');
console.log('complete');
})
.error(function() {
alertBar('alert-danger', 'Service Category', 'Oops! An error occurred. Please try again later.');
});
}
请假设ajax请求以及与向相关控制器发布数据有关的任何操作都正常,这是唯一的问题是如何访问编辑器的内容并将其发布到控制器,所以我可以将它保存在数据库中。
提前感谢您的帮助。
答案 0 :(得分:0)
以下是我如何通过AJAX传递Joomla编辑器值:
将编辑器内容保存在隐藏的输入中,或者将操作元素保存为PHP / HTML端的数据属性:
<input type="hidden" id="element_id" value="<?php echo $editor->save( 'editor_id' ); ?>" />
或作为按钮上的数据属性:
<a id="element_id" href="javascript:;" data="<?php echo $editor->save( 'editor_id' ); ?>">Submit</a>
然后在Javascript端只调用那个输入值或数据属性:
var message = WFEditor.getContent('element_id');
请记住,如果您将html传递给控制器并使用jinput获取值,那么您需要使用raw,否则它将从中删除html标记。
$message = $jinput->get('message', null, 'raw');