繁体   English   中英

通过Ajax将HTML内容发布到PHP

[英]Posting HTML content to PHP via Ajax

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

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

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

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
                });
            }
        }
    });
};

最可能是因为发布时需要转义“内容”。

尝试

content = encodeURIComponent(content) 

要么

content = encodeURI(content)

在将其附加到dataString之前

我认为您可能会以错误的方式思考。 您具有回调函数的PHP脚本将接收您告诉它接收的所有数据。

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

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

然后,您只需要让您的php脚本拾取正在发送的数据即可。 您可以通过POST或GET来完成,这完全取决于您,具体取决于您的工作。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM