【问题标题】:Posting HTML content to PHP via Ajax通过 Ajax 将 HTML 内容发布到 PHP
【发布时间】:2011-12-01 07:06:11
【问题描述】:

我通过 AJAX 将 HTML 内容发布到 PHP。在调试过程中,我看到 ajax 从编辑器发布全部内容。但是当我检查我的数据库时,我看到了 40-50% 的已发送内容。在 php.ini 中使用以下函数过滤发送的数据。我的数据库字段类型是长度为 0 的文本。

function html($data, $db)
{
$data = htmlentities($data);        
$data = $db->escape_string($data);
return $data;
}

没有成功。但是当我尝试发布标准文本内容(none-html)时,它会将整个内容发布到数据库表中。如何处理这个问题?有什么建议吗?

JS

function postViaAjax(autosaveMode) {
    var name = $("#name").val();
    var title = $("#title").val();
    var menu = $("#menu").val();
    var parentcheck = $(".parentcheck:checked").val();
    var id = $("#id").val();
    if (parentcheck == 0) {
        var parent = parentcheck;
    } else {
        var parent = $("#parent").val();
    }
    var content = CKEDITOR.instances['content'].getData();
    var dataString = 'name=' + name + '&title=' + title + '&menu=' + menu + '&parentcheck=' + parentcheck + '&id=' + id + '&parent=' + parent + '&content=' + content;
    $.ajax({
        type: "POST",
        url: "processor/dbadd.php",
        data: dataString,
        dataType: "json",
        success: function (result, status, xResponse) {
            var message = result.msg;
            var err = result.err;
            var now = new Date();
            if (message != null) {
                if (autosaveMode) {
                    $('#submit_btn').attr({
                        'value': 'Yadda saxlanıldı ' + now.getHours() + ':' + now.getMinutes() + ':' + now.getSeconds()
                    });
                } else {
                    $.notifyBar({
                        cls: "success",
                        html: message + ' ' + now.getHours() + ':' + now.getMinutes() + ':' + now.getSeconds()
                    });
                }
            }
            if (err != null) {
                $.notifyBar({
                    cls: "error",
                    html: err
                });
            }
        }
    });
};

【问题讨论】:

  • 请发布发布数据的javascript代码。
  • 也许您的数据库字段的文本大小有限?
  • 当我尝试发布标准文本内容 (none-html) 时,它会将整个内容发布到数据库表中。
  • 你为什么要通过htmlentities() 运行它并为数据库转义它?
  • 得到这样的输出 prntscr.com/3c8ht 。插入和输出时需要从哪些函数传递数据?

标签: php jquery mysql html ajax


【解决方案1】:

很可能是因为您在发布“内容”时需要对其进行转义。

试试

content = encodeURIComponent(content) 

content = encodeURI(content)

在将其附加到数据字符串之前

【讨论】:

    【解决方案2】:

    我想你可能想错了。具有回调函数的 PHP 脚本将接收您告诉它接收的所有数据。

    如果您使用的是 jQuery 之类的库,您可以进行一些设置,使其类似于以下内容:

        var formValues = $(this).serialize();
        $.ajax({
            url: 'yourFile.php?'+formValues,
            dataType: 'json',
            success: function(data){
                console.log(data);
            }
        }); 
        return false;
    

    然后您只需要让您的 php 脚本获取正在发送的数据。您可以通过 POST 或 GET 执行此操作,这完全取决于您,具体取决于您在做什么。

    我希望这可以帮助您入门。

    【讨论】:

    • 我现在序列化了,我的函数做的事情完全一样。我不使用序列化,因为我使用的是 CKeditor。 var content = CKEDITOR.instances['content'].getData();获取编辑器数据
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-25
    相关资源
    最近更新 更多