TinyMCE + Jquery + PHP + AJAX特殊字符问题
问题描述:
我有一个TinyMCE在我的网站上的实现很好。但是如果用户输入一个特殊的字符如“<”,查询发送到我的MySQL数据库在出现特殊字符时出现。让我告诉你什么happining:TinyMCE + Jquery + PHP + AJAX特殊字符问题
这是我如何调用TinyMCE的:
tinyMCE.init({
mode : "exact", elements : "e_text", theme : "simple", oninit : "setPlainText", plugins : "paste" });
function setPlainText() {
var ed = tinyMCE.get('e_text');
ed.pasteAsPlainText = true;
if (tinymce.isOpera || /Firefox\/2/.test(navigator.userAgent)) {
ed.onKeyDown.add(function (ed, e) {
if (((tinymce.isMac ? e.metaKey : e.ctrlKey) && e.keyCode == 86) || (e.shiftKey && e.keyCode == 45))
ed.pasteAsPlainText = true;
});
} else {
ed.onPaste.addToTop(function (ed, e) {
ed.pasteAsPlainText = true;
});
}
}
不要担心寻找一个错误,该代码使得没有错误TinyMCE的。然后,我有保存ajax的过程jQuery函数:
$("#save-btn").click(function() {
tinyMCE.triggerSave();
alert($('#e_text').val());
$("#status").html('<img src="css/img/ajax-loader.gif" align="absmiddle"> Saving...');
$.ajax({type: "POST", url: "handler.php", data: "e_text="+ $('#e_text').val() + "&e_title="+ $('#extra_title').val(),
success: function(server_response){
$("#status").ajaxComplete(function(event, request){
alert(server_response);
if(server_response.substring(0,4) == 'Last') {
$("#status").html('<img src="css/img/available.png" align="absmiddle"> <font color="#06699e"> '+ server_response +' </font> ');
}
else {
$("#status").html('<img src="css/img/not_available.png" align="absmiddle"> <font color="red">Not saved, please try again later. '+server_response+'</font>');
}
});
}
});
});
这个叫handler.php至极处理Ajax调用,然后返回结果。对于这个特殊的问题,我修改PHP脚本只是打印POST变种,看看是怎么回事,或者在其他的手,什么是抵达PHP脚本:
} elseif(isset($_POST['e_text'])) {
$fgmembersite->DBLogin();
echo($_POST['e_text']);
mysql_query("INSERT INTO ".table_extra." (id,id_user,title,content) VALUES (NULL,'".$_SESSION['id_of_user']."','".mysql_real_escape_string($_POST['e_title'])."','".mysql_real_escape_string($_POST['e_text'])."') ON DUPLICATE KEY UPDATE title='".mysql_real_escape_string($_POST['e_title'])."', content='".mysql_real_escape_string($_POST['e_text'])."';");
mysql_query("UPDATE ".$fgmembersite->tablename." SET last_update_cv = NOW();");
$result = mysql_fetch_array(mysql_query("SELECT NOW();"));
//echo 'Last saved ' . $result['NOW()'];
}
忽略一切,但呼应指令。回到我的jQuery代码,你还记得两个警报函数吗?那么其中一个向我展示了TinyMCE在发送到php脚本之前返回的数据,第二个显示了由php脚本返回的数据。
让我们假设我插入“世界,你好你好>>>再次!”到TinyMCE的,这是我所看到的:
然后我打保存,我得到了警示一:
我打好吧,我也得到警告二号(服务器响应,PHP什么了):
那么,为什么?为什么PHP脚本(只是和它通过POST得到的回声)正在返回一个裁剪的短语?正当特殊字符出现时?
感谢您为我提供的任何帮助!
答
这些&符与data
属性的URL格式混淆。 为什么不把它改成这样的东西呢?
data: {
"e_text": $('#e_text').val(),
"e_title": $('#extra_title').val()
}