代码之家  ›  专栏  ›  技术社区  ›  Tony

带jquery的Ajax Post请求不包含urlencode“+”

  •  5
  • Tony  · 技术社区  · 16 年前

    我有很多JSON数据需要传递给一个请求:

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

    friendsar是一个JSON格式的对象数组。问题是有些对象具有带“+”的数据,并且没有正确编码。它以“”的形式出现在服务器端,数据混乱。我真的需要遍历所有数据并分别编码每个值吗?一定有更简单的方法。

    3 回复  |  直到 16 年前
        1
  •  4
  •   Doug Neiner    16 年前

    我会用 $.post 方法与原始 $.ajax 第一,让jquery为您处理工作:

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

    另外,因为你只能 POST 通过Ajax访问同一域中的地址,为什么不直接使用 "/users/rankings" 作为您的URL VS。 "http://"+HOST+"/users/rankings"

        2
  •  4
  •   TM. Randy Simon    16 年前

    您应该能够使用javascript escape 函数来修复此问题。在发送数据和URL之前,只需对其进行转义。

        3
  •  1
  •   Harmen    16 年前

    这不是像:

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