【问题标题】:PHP CKeditor post via Ajax on blur strips html tagsPHP CKeditor 通过 Ajax 发布模糊条带 html 标签
【发布时间】:2014-07-02 23:33:58
【问题描述】:

我正在使用以下带有 ajax 的 php 将模糊数据发布到 SQL。将基本文本传递给数据库可以正常工作,但我已将 CKeditor 添加到一些字段以允许所见即所得编辑,我似乎无法弄清楚发生了什么剥离 HTML 标签并不允许它们通过。

这里是php

<?php
if(!empty($_POST))
{
//database settings
include "config.php";
foreach($_POST as $field_name => $val)
{
    //clean post values
    $field_userid = trim($field_name);
    $val = trim(mysql_real_escape_string($val));

    //from the fieldname:user_id we need to get user_id
    $split_data = explode(':', $field_userid);
    $user_id = $split_data[1];
    $field_name = $split_data[0];
    if(!empty($user_id) && !empty($field_name) && !empty($val))
    {
        //update the values
        mysql_query("UPDATE user_details SET $field_name = '$val' WHERE user_id = $user_id") or mysql_error();
        echo "Field updated to server";
    } else {
        echo "Invalid Requests";
    }
}
} else {
echo "Invalid Requests";
}
?>

js

$(function(){
    //acknowledgement message
    var message_status = $("#status");
    $("[contenteditable=true]").blur(function(){
        var field_userid = $(this).attr("id") ;
        var value = $(this).text() ;
        $.post('ajax.php' , field_userid + "=" + value, function(data){
            if(data != '')
            {
                message_status.fadeIn("slow");
                message_status.text(data);
                //hide the message
                setTimeout(function(){message_status.fadeOut("slow", "swing")},500);
            }
        });
    });
});

这是 HTML 的示例字段:

<p id="story1:<?php echo $row_rsTest['user_id']; ?>" contenteditable="true"><?php echo $row_rsTest['story1']; ?></p>

我觉得我错过了一些明显的东西。我在另一个实例中使用相同的 CK 编辑器,并在提交时发布了一个表单,这可能是一个模糊问题吗?

【问题讨论】:

  • 我对为什么使用 CKeditor 感到困惑,它会创建 html,然后创建 strip_tags
  • 我会告诉你这是我开始的第一个地方。我完全删除了strip_tags,但由于某种原因,HTML标签在到达数据库之前就被拉了出来。我将更新我的 PHP 以反映已删除的 strip_tags。

标签: php ajax ckeditor contenteditable strip-tags


【解决方案1】:

我也在 CKEditor 论坛上回复:不要使用 jQuery,特别是 getText(惊喜,它只会给你文本),使用 CKEditor API 并在编辑器实例上调用 .getData()。

【讨论】:

  • HTF,是的,这就是罪魁祸首。只是为了测试我更改了 'var value = $(this).text() ;'到'var value = $(this).html();'在 JS 中,它立即开始工作。现在我需要修改 CKE 配置中允许的标签以允许样式属性类等。我很想切换并只使用 CKE Api 来实例化和使用 getData 而不是将编辑器添加到所有内容可编辑的 div 中。看看上面的代码,你会如何从 jquery 转换过来?
  • 嗨,安德鲁,这是一个不同的问题,您应该为它创建一个新帖子,其中仅包含 HTML 和 JS 代码,准确地解释您的新问题是什么(当然,检查文档和现有问题,因为那是肯定覆盖)
  • 感谢 AlfonsoML,将检查板以获取答案并发布新问题(仅在必要时:-)
猜你喜欢
  • 2011-12-01
  • 1970-01-01
  • 2011-06-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-07
  • 2017-07-23
相关资源
最近更新 更多