主题: 用PHPWIND9.0的AJAX提交获取不到编辑器的数据,代码如下
作者: retitan, 发布日期: 2012-10-03 02:16:33, 浏览数: 4661
这个是HTML代码、、、、、、、

<!doctype html>
<html>
<head>
	<template source='TPL:admin.common.head' />
	<link rel="stylesheet" href="{@G:url.js}/kindeditor/themes/default/default.css" />
	<link rel="stylesheet" href="{@G:url.js}/kindeditor/plugins/code/prettify.css" />
	<script charset="utf-8" src="{@G:url.js}/kindeditor/kindeditor.js"></script>
	<script charset="utf-8" src="{@G:url.js}/kindeditor/lang/zh_CN.js"></script>
	<script charset="utf-8" src="{@G:url.js}/kindeditor/plugins/code/prettify.js"></script>
	<script>
		KindEditor.ready(function(K) {
                var editor1 = K.create('textarea[name="content"]', {
                themeType : 'simple',
				cssPath : '{@G:url.js}/kindeditor/plugins/code/prettify.css',
				uploadJson : '{@G:url.js}/kindeditor/php/upload_json.php',
				fileManagerJson : '{@G:url.js}/kindeditor/php/file_manager_json.php',
				allowFileManager : true,
 				afterCreate : function() {
				 					var self = this;
				 					K.ctrl(document, 13, function() {
				 						self.sync();
				 						K('form[name=add]')[0].submit();
				 					});
				 					K.ctrl(self.edit.doc, 13, function() {
				 						self.sync();
				 						K('form[name=add]')[0].submit();
				 					});
				 				},
                afterBlur: function(){
                    // 取得HTML内容
                    //html = editor.html();
                    
                    // 同步数据后可以直接取得textarea的value
                    //this.sync();
                    //document.getElementById('content').value = editor1.html(); // 原生API
                    this.sync();
                    //document.getElementById('content')=KE.util.setData('content');
                    //alert("txt");
                    //html = K('#content').val(); // KindEditor Node API
                    //this.sync();
                    //return false;
                }
			});
            prettyPrint();
		});
        //html=editor.html();
	</script>
</head>
<body>
<div class="wrap">
<!--添加单页面-->
	<div class="nav">
		<div class="return"><a href="{@WindUrlHelper::createUrl('pager/pager/run')}">返回上一级</a></div>
		<ul class="cc">
			<li class="current"><a href="">添加单页面</a></li>
		</ul>
	</div>
	<div class="h_a">添加单页面</div>
<!--==============================添加单页面================================-->
	<form name="add" class="J_ajaxForm" action="{@WindUrlHelper::createUrl('pager/pager/doadd')}" method="post">
	<div class="table_full">
		<table width="100%">
			<col class="th" />
			<tr>
				<th>名称</th>
				<td><span class="must_red">*</span><input name="name" type="text" class="input length_5" ><p class="gray">最多不超过5个字</p></td>
			</tr>
			<tr>
				<th>描述</th>
				<td><textarea name="descrip" style="width:300px;height:60px;"></textarea><p class="gray">请输入页面介绍</p></td>
			</tr>
			<tr>
				<th>关键词</th>
				<td><input name="keywords" type="text" class="input length_5" ><p class="gray">页面关键词</p></td>
			</tr>
			<tr>
				<th>页面内容</th>
				<td><span class="must_red">*</span><textarea id="content" name="content" style="width:700px;height:400px;"></textarea>
                </td>
			</tr>
		</table>          
	</div>
	<div class="btn_wrap">
		<div class="btn_wrap_pd">
			<button class="btn btn_submit J_ajax_submit_btn" type="submit">提交</button>
		</div>
	</div>
	</form>
	</div>
	<template source='TPL:admin.common.footer' />
</body>
</html>

这个是JS代码
//所有的ajax form提交,由于大多业务逻辑都是一样的,故统一处理
	var ajaxForm_list = $('form.J_ajaxForm');
	if( ajaxForm_list.length ) {
		Wind.use('dialog','ajaxForm',function() {
			//ajaxForm_list.on('submit', function(e) {
			$('button.J_ajax_submit_btn').on('click', function(e) {
				e.preventDefault();
				/*var btn = $(this).find('button.J_ajax_submit_btn'),
					form = $(this);*/
				var btn = $(this),
					form = btn.parents('form.J_ajaxForm');

				if(btn.data('subcheck')) {
					//提交前操作
					var beforefn = btn.data('beforefn');
					beforefn();
					return false;
				}

				form.ajaxSubmit({
					url : btn.data('action') ? btn.data('action') : form.attr('action'),			//按钮上是否自定义提交地址(多按钮情况)
					dataType	: 'json',
					beforeSubmit: function(arr, $form, options) {
						var text = btn.text();

						//按钮文案、状态修改
						btn.text(text +'中...').prop('disabled',true).addClass('disabled');
					},
					success		: function(data, statusText, xhr, $form) {
						var text = btn.text();

						//按钮文案、状态修改
						btn.removeClass('disabled').text(text.replace('中...', '')).parent().find('span').remove();

						if( data.state === 'success' ) {
							$( '<span class="tips_success">' + data.message + '</span>' ).appendTo(btn.parent()).fadeIn('slow').delay( 1000 ).fadeOut(function() {
								if(data.referer) {
									//返回带跳转地址
									if(window.parent.Wind.dialog) {
										//iframe弹出页
										window.parent.location.href = data.referer;
									}else {
										window.location.href = data.referer;
									}
								}else {
									if(window.parent.Wind.dialog) {
										reloadPage(window.parent);
									}else {
										reloadPage(window);
									}
								}
							});
						}else if( data.state === 'fail' ) {
							$( '<span class="tips_error">' + data.message + '</span>' ).appendTo(btn.parent()).fadeIn( 'fast' );
							btn.removeProp('disabled').removeClass('disabled');
						}
					}
				});
			});

		});
	}
 如果加入afterblur:,jquery提示错误,而且也得不到数据,普通提交没有问题,百度N遍了没有找到解决方法,
谢谢啦、、、
作者: Roddy, 发布日期: 2012-10-03 10:43:05

1. 把var editor1 = K.create(... 改成 window.editor1 = K.create(...


2. afterBlur不需要,删掉


3. ajaxSubmit的beforeSubmit里添加editor1.sync();即可

回复
作者: retitan, 发布日期: 2012-10-03 19:06:43
实验 了一下还是不成功啊,不知道怎么回事。还是谢谢你的回答,速度很快
回复
作者: retitan, 发布日期: 2012-10-04 15:49:15
刚才又试了下,提交英文可以,但是中文就不行,是不是把中文和HTML给过滤掉了?
回复
发表新帖 发表回复