大家好,我在使用ajax时遇到了一个问题。当我在文本区域中提交带有"Script"alert(aaaa)"script“的表单时,我的表单是错误的,并且我现在不知道如何使用ajax验证来避免我的问题。谢谢你的帮助。`
$(document).ready(function () {
$("#sub").click(function (e) {
e.preventDefault();
var comment =$("#com").val();
if ($.trim(comment) == "") {
alert("u must fill here");
return;
}
$.ajax({
type: 'json',
method: 'POST',
headers: {
"X-Requested-With": "XMLHttpRequest"
},
url: 'http://ivsexpress.net/index.php?controller=postdetail&method=create&post_id=<?php echo $_GET['post_id']; ?>',
data: {
comment: comment
},
success: function(data){
var data = JSON.parse(data);
$("#form")[0].reset();
$("#Comment_ajax").prepend($("<div></div>").html(
'<h4 style="font-size:15px;color:#9f224e">'+ data.full_name +'</h4>'+
'<h6 style="font-style:italic">'+ 'vào lúc: '+ data.created_date+'</h6>'+
'<p style="font-size:13px;text-align:justify;word-break:break-word;">'+ data.content +'</p>'+'<br>'
));
},
error: function(data, status, jqxhr){
console.log(status);
}
});
return false;
});
});
`
发布于 2016-08-19 03:49:47
如果我理解正确的话,您需要转义data.content
部分,因为您正在连接字符串以生成html元素(这是一个糟糕的做法)。无论如何,您都可以通过使用
var escaped_full_name = $('<p>').append(data.full_name).html();
var escaped_content = $('<p>').append(data.content).html();
var escaped_created_date = $('<p>').append(data.created_date).html();
并将其用作
$("#Comment_ajax").prepend($("<div></div>").html(
'<h4 style="font-size:15px;color:#9f224e">'+ escaped_full_name +'</h4>'+
'<h6 style="font-style:italic">'+ 'vào lúc: '+ escaped_created_date+'</h6>'+
'<p style="font-size:13px;text-align:justify;word-break:break-word;">'+ escaped_content +'</p>'+'<br>'
));
尽管如此,我还是强烈建议不要使用字符串连接来创建html元素
https://stackoverflow.com/questions/39030659
复制