我正在尝试使用带有php的ajax帖子提交评论,它正如我预期的那样工作得很好但是当我尝试提交包含&
的一些刺痛时它会失去刺痛的路径只显示从be where到何处。
我真的不知道如何解决这个问题,我不知道问题是什么,请我帮忙。
参见示例
MY ajax
<script>
$('#submitcomment').on('click', function(){
try{
var message = $('.commentTextinput').val();
var key= $(this).attr('data-keyname');
$.ajax({
url: UrlExistsA('snippet/snippetcomment'),
data: 'message=' + message + '&key=' + key,
type: 'POST',
beforeSend: function(){
$('#submitcomment').html('Wait....');
},
success: function(data){
$('tr.replyList:last-child').after(data);
$('.commentTextinput').val('');
$('#submitcomment').html('Comment');
},
error: function(data){
alert('Processing Error' + '<br/>' + data);
}
});
}catch(err){alert(err.message);}
finally{}
});
</script>
这是测试php
<?php
if(isset($_POST['message'])){
$postReply = htmlentities($_POST['message'], ENT_QUOTES, "UTF-8");
echo $postReply;
}
上面会输出
明天我们会跑得更快,伸展得更远......然后 一个晴朗的早晨
但是发布的原始字符串是
明天我们会跑得更快,伸展得更远......然后 一个晴朗的早晨 - 所以我们击败了当前的船只, 不断回到过去。
当我尝试提交&&&&&&&&&&&&&&&&&&&&&&&
时它返回空但是当我在不使用ajax的情况下回显上面的字符串时它非常好
答案 0 :(得分:1)
您需要调用encodeURIComponent
来编码参数字符串中的特殊字符。 &
是参数之间的分隔符,因此您需要对其进行编码。
data: 'message=' + encodeURIComponent(message) + '&key=' + encodeURIComponent(key),
但更简单的方法是使用对象而不是字符串,然后jQuery将自动编码。
data: { message: message, key: key },