我通过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
});
}
}
});
};
答案 0 :(得分:4)
很可能是因为您在发布时需要转义“内容”。
尝试
content = encodeURIComponent(content)
或
content = encodeURI(content)
在将其附加到dataString
之前答案 1 :(得分:0)
我认为你可能会以错误的方式思考这个问题。您具有回调函数的PHP脚本将接收您告诉它接收的所有数据。
如果你使用的是像jQuery这样的库,你可以设置一些东西,所以它有点像下面那样:
var formValues = $(this).serialize();
$.ajax({
url: 'yourFile.php?'+formValues,
dataType: 'json',
success: function(data){
console.log(data);
}
});
return false;
然后你只需要让你的php脚本获取正在发送的数据。你可以通过POST或GET这样做,这完全取决于你,取决于你在做什么。
我希望这有助于您入门。