2012-01-14 76 views
4

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

在服务器端我使用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']); 

我搜索看着这个位置相关的问题上左右,但非让我很遗憾。

UPDATE

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

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

尝试'之前使用的URLEncode “标签=” + encodeURIComponent方法(标签)+ “&限=” + ENC odeURIComponent(limit)',或'{tags:tags,limit:limit}'。 – 2012-01-14 16:24:40

+0

这也不工作:data:“tags =”+ encodeURIComponent(tags)+“&limit =”+ limit – 2012-01-14 16:28:48

+0

{tags:tags,limit:limit}也不起作用。 – 2012-01-14 16:44:05

回答

8

数据(标签)必须使用encodeURIComponent方法()

+0

这不工作:data:“tags =”+ encodeURIComponent(tags)+“&limit =”+ limit – 2012-01-14 16:29:20

+2

请确保您的流程的所有部分都使用UTF-8 检查: HTML页面; 请求编码; 服务器端编码; 'AJAX.setRequestHeader(“Content-type”,“application/x-www-form-urlencoded; charset = UTF-8”);' 'meta http-equiv =“content-type”content =“text/html; charset = UTF-8“' 基本上,你将不得不跟踪哪一步字符编码丢失。 – 2012-01-14 16:35:41

+0

谢谢,它解决了我在Internet Explorer中的JQuery AJAX请求中发送特殊字符的问题。 – 2014-05-02 13:24:55

0

您可以通过使用JSON对象

如实现这一目标将其发送到服务器之前编码: [{ “属性Id”:“4035 ”, “值”: “街头&之家”}]

,或者你可以交