2013-01-11 43 views
1

我遇到問題。提交表單後,我使用AJAX發送請求。一切都很完美,直到我嘗試西里爾語的文字。AJAX將西里爾文轉換爲某種編碼

我輸入:питання

什麼通知我的javascript:питання

什麼回聲我$ _ POST [ '問題']:%u041F%u0438%u0442%u0430%u043D%u043D%u044F

這裏是我的AJAX請求:

$.ajax({ 
     type: "POST", 
     url: "addQuestion.php", 
     data: "u_id=" + $("#u_id").val() + "&u_a_name=" + $("#u_a_name").val() + "&question="+escape($("#question_input").val()), 
     success: function(data) { 
       if (data == "Asked") { 
       alert("Asked"); 
       window.location.reload(); 
      } else { 
       alert(data); 
      } 
     } 
    }); 

所以我認爲這是AJAX問題,但我還沒有在互聯網上找到答案。 感謝您的關注。

回答

2

Javascript的escape()不適用於非ASCII字符,並處理任何Unicode字符我一般使用encodeURIComponent()來代替。在PHP中,您可以使用urldecode()來反轉相同的編碼。所以:

的Javascript:encodeURIComponent("питання")回報%D0%BF%D0%B8%D1%82%D0%B0%D0%BD%D0%BD%D1%8F

PHP:urldecode("%D0%BF%D0%B8%D1%82%D0%B0%D0%BD%D0%BD%D1%8F");回報питання

https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/encodeURIComponent

http://php.net/manual/en/function.urldecode.php

+0

謝謝你的幫助! – Ivan

1

escape使用非標準URL編碼,不應該使用的。

無論如何,使用jQuery,你不會把你的數據字符串,但作爲對象,讓jQuery的格式,並對其進行編碼:

$.ajax({ 
     type: "POST", 
     url: "addQuestion.php", 
     data: { 
      u_id: $("#u_id").val(), 
      u_a_name: $("#u_a_name").val(), 
      question: $("#question_input").val() 

     }, 

     success: function(data) { 
       if (data == "Asked") { 
       alert("Asked"); 
       window.location.reload(); 
      } else { 
       alert(data); 
      } 
     } 
}); 

更清潔和更容易。

相關問題