无法通过jQuery ajax发送特殊字符

时间:2012-01-14 16:21:04

标签: javascript character-encoding tags

我正在开发一个用户正在使用标签搜索文件的网页。 我正在使用jQuery Ajax来远程调用API(数据库)。 当我使用像a-z这样的非特殊字符但在使用例如åäö时失败时,一切正常。

在服务器端,我正在使用PHP。我打印标签,看它是否“到达”,所有a-z工作正常,但åäö根本没有显示。他们似乎没有“到达”。

有什么不对?

这是我的jQuery代码:

var tags = $('#tags').val();

$.ajax ({
    type: "POST",
    url: base_url + "search", 
    data: "tags=" + tags + "&limit=" + limit, 
    beforeSend: function (html) {
            $("#search_results").html("Searching for files...");
    },
    success: function (html) {
            $("#search_results").html(html);
    },
    error: function (html) {
            $("#search_results").html('Something went wrong!');
    }
});

这是我的服务器端代码:

echo ($_POST['tags']);

我在这里搜索并查看了有关此问题的相关问题但遗憾的是没有帮助我。

更新

用这个解决了!现在工作正常。

{tags: encodeURIComponent(tags), limit: limit}

3 个答案:

答案 0 :(得分:10)

在使用encodeURIComponent()

将数据(标签)发送到服务器之前,必须对其进行编码

答案 1 :(得分:0)

您可以使用JSON对象

来实现此目的

例如: [{“AttributeId”:“4035”,“Value”:“Street& House”}]

或者你可以在发布之前使用URLencode

答案 2 :(得分:0)

以下代码可以很好地通过Ajax调用发送&和“”或任何特殊字符:

specialChar1= "JΛ̊KE#2@#*&($^@%#*@#%))*$&@*(""" ;
specialchar2 ="??&!!--##";
url = "/get/" + encodeURIComponent( specialChar1) +"/"+  encodeURIComponent ( specialchar2 )