TinyMCE Jquery PHP AJAX特殊字符问题

我的网站上有一个TinyMCE实现,效果很好.但是,如果用户输入特殊字符,如“<”当出现特殊字符时,发送到我的MySQL数据库的查询就会被裁剪.让我告诉你令人开心的事:

这就是我所说的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呈现无错误.然后我有一个jquery函数,用于保存ajax进程:

    $("#save-btn").click(function() {
            tinyMCE.triggerSave();
            alert($('#e_text').val());
            $("#status").html('<img src="css/img/ajax-loader.gif" align="absmiddle">&nbsp;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>&nbsp; ');
                                        }
                                        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 var并查看发生了什么,或者换句话说,是什么到达了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脚本返回的数据.

假设我再次插入“ Hello world>>> Hello!进入TinyMCE,这就是我所看到的:

然后我点击“保存”,并得到了第一号警报:

我点击确定,并得到第二个警报(服务器响应,PHP得到了什么):

所以为什么?!!!为什么php脚本(只是和通过POST得到的回声)返回了一个错误的短语?就在特殊字符出现时?

感谢您能为我提供的任何帮助!

解决方法:

这些“&”号使data属性的URL格式混乱.
为什么不将其更改为这种形式呢?

data: {
    "e_text": $('#e_text').val(),
    "e_title": $('#extra_title').val()
}
上一篇:javascript-插入/编辑链接模式文本字段不能被重点关注TinyMce WordPress


下一篇:flask项目中使用富文本编辑器