使用JQuery的AJAX POST请求不是urlencode'+'

时间:2009-12-29 16:36:49

标签: jquery json encoding

我需要传递给请求的很多JSON数据:

$.ajax({
                type: "POST",
                url: "http://"+HOST+"/users/rankings",
                data: "friends="+JSON.stringify(friendsArr),
                success: function(response){
                    $("#rankings").html(response);
                }
            });

friendsArr是JSON格式的对象数组。问题是某些对象的数据带有“+”且无法正确编码。它在服务器端作为“”,数据搞砸了。我是否真的必须遍历所有数据并分别编码每个值?必须有一个更简单的方法。

3 个答案:

答案 0 :(得分:4)

您应该可以使用javascript escape函数来解决此问题。只需在发送之前转义数据和网址即可。

答案 1 :(得分:4)

我会尝试使用$.post方法与原始$.ajax方法,让jQuery为您处理工作:

$.post( "http://"+HOST+"/users/rankings",
    { friends: JSON.stringify(friendsArr) },
    function(data){
        $("#rankings").html(response);
  }
);

此外,由于您只能通过AJAX POST到同一个域的地址,为什么不使用"/users/rankings"作为您的网址与"http://"+HOST+"/users/rankings"

答案 2 :(得分:1)

不是那么容易:

$.ajax({
     type: "POST",
    url: "http://"+HOST+"/users/rankings",
    data: "friends="+escape(JSON.stringify(friendsArr)),
    success: function(response){
        $("#rankings").html(response);
    }
});