2016-12-30 28 views
-1

我想用php提交一個使用ajax後的註釋,它工作得很好,因爲我期望它,但是當我嘗試提交一些包含&的sting時,它會失敗的刺只顯示從毆打直到那裏和。 我真的不知道如何解決這個問題,我不知道什麼是問題,我需要幫助。php在使用ajax後引用後丟失了一些字符串的路徑

參見實施例

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

需要調用encodeURIComponent在參數字符串特殊字符進行編碼。 &是參數之間的分隔符,因此您需要對其進行編碼。

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

但是一個簡單的方法是使用一個對象而不是字符串,然後jQuery將自動編碼。

data: { message: message, key: key }, 
+0

謝謝它只是很好地工作,如果 –

+0

該字符串是唯一一個我還可以將其添加爲一個對象? 'data:{id:id}'? –

+0

是的,沒有什麼特別的。 – Barmar

相關問題