我有问题。提交表单后,我使用AJAX发送请求。在我尝试西里尔文本之前,一切都很完美。
我输入的内容:питання
什么提醒我javascript:питання
%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问题,但我没有在互联网上找到答案。 谢谢你的关注。
答案 0 :(得分: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
答案 1 :(得分:1)
escape
使用非标准网址编码,根本不应使用。
无论如何,使用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);
}
}
});
更清洁,更容易。