Javascript 为什么$\u POST要从字符串中删除HTML标记?
我使用的是PHP5.6,使用的是无脂肪框架(如果有必要的话),但遇到了一个奇怪的问题。我正在向服务器发送表单数据,如下所示:Javascript 为什么$\u POST要从字符串中删除HTML标记?,javascript,php,jquery,ajax,fat-free-framework,Javascript,Php,Jquery,Ajax,Fat Free Framework,我使用的是PHP5.6,使用的是无脂肪框架(如果有必要的话),但遇到了一个奇怪的问题。我正在向服务器发送表单数据,如下所示: function submitForm(form) { var fd = new FormData(); var file_data = isImageIncluded ? $('input[type="file"]')[0].files : []; for (var i = 0; i < file_data.length; i++) {
function submitForm(form)
{
var fd = new FormData();
var file_data = isImageIncluded ? $('input[type="file"]')[0].files : [];
for (var i = 0; i < file_data.length; i++) {
fd.append("file_" + i, file_data[i]);
}
var other_data = $(form).serializeArray();
$.each(other_data, function(key, input) {
fd.append(input.name, input.value);
});
sendData(url, fd, form);
}
function sendData(url, data, form)
{
$.ajax({
type: 'POST',
url: url,
data: data,
contentType: false,
processData: false,
success: function(data) {
console.log(data);
}
}
});
并且无法获取描述以在字符串中显示html标记。有人知道发生了什么吗
编辑
这是我在Chrome上的标题截图。我标记了我所指的对象。如图所示,html标记将发送到服务器,因此我不确定为什么它不会显示在$\u POST数组中
编辑2
下面是我得到的响应的屏幕截图,与上面标题的屏幕截图相对应:
有人见过这个吗?对于那些想知道的人,我发现在我的无脂框架变体中,有一段代码去掉了标记。在它的app.php中,我发现
// clean ALL incoming user input by default
$request = array();
foreach (array('GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'COOKIE') as $var) {
$input = $f3->get($var);
if (is_array($input) && count($input)) {
$cleaned = array();
foreach ($input as $k => $v) {
$k = strtolower(trim($f3->clean($k)));
$v = $f3->clean($v);
if (empty($v)) {
continue;
}
$cleaned[$k] = $v;
$request[$k] = $v;
}
ksort($cleaned);
$f3->set($var, $cleaned);
}
}
它使用
$f3->clean()
从所有传入的输入中删除标记,因此我必须按照文档中的说明将其修改为白名单标记。只是为了确保,如果在html上下文中输出这样的字符串,您将不会看到
,而是看到粗体文本<代码>回显htmlspecialchars($_POST['description'])代码>?您是否已在控制台中检查是否已将正确的数据发送到您的页面?是的,我已检查以查看发送的内容。标题显示所有标记,无论是粗体、斜体、删除线等。只有响应才会清除它们。我将尝试htmlspecialchars方法。谢谢还有其他代码在工作中,你没有向我们展示好的,我将发布完整的js和phpmethods@Dagon我用完整的代码进行了编辑。这段代码不属于框架。这是你应用程序的一部分,我才意识到。我正在使用一个名为F3样板的子框架(如果您愿意的话)。这是无脂肪的MVC版本。再次感谢您的帮助。这就解释了,如果您能及时更新您的答案,那就太好了,公平地说;)
// clean ALL incoming user input by default
$request = array();
foreach (array('GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'COOKIE') as $var) {
$input = $f3->get($var);
if (is_array($input) && count($input)) {
$cleaned = array();
foreach ($input as $k => $v) {
$k = strtolower(trim($f3->clean($k)));
$v = $f3->clean($v);
if (empty($v)) {
continue;
}
$cleaned[$k] = $v;
$request[$k] = $v;
}
ksort($cleaned);
$f3->set($var, $cleaned);
}
}