【发布时间】: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