php使用ajax post在submition之后丢失了一些字符串路径

时间:2016-12-30 23:54:13

标签: php jquery ajax

我正在尝试使用带有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的情况下回显上面的字符串时它非常好

1 个答案:

答案 0 :(得分:1)

您需要调用encodeURIComponent来编码参数字符串中的特殊字符。 &是参数之间的分隔符,因此您需要对其进行编码。

data: 'message=' + encodeURIComponent(message) + '&key=' + encodeURIComponent(key),

但更简单的方法是使用对象而不是字符串,然后jQuery将自动编码。

data: { message: message, key: key },