【问题标题】:jquery param() does not encode parameter properly which have "&" includedjquery param() 没有正确编码包含“&”的参数
【发布时间】:2011-07-15 16:26:33
【问题描述】:

我的应用程序基于 Ajax 请求/响应。我创建所有参数的对象并使用 jquery param() 方法制作查询字符串。它工作正常,但是当某些参数中包含“&”时,它不会正确编码,因此在这种情况下服务器会返回错误。在这种情况下,当数据包含“&”字符时,有人可以告诉我如何创建查询字符串吗?

var url = "http://www.abc.com"
    url += "?username='abc'";
    url += "&" + $.param(params);

/*
   params values are follows:

   params[name] = 'test'
   params[id] = 1234
   params[xyz] = 'entertainment & games'
*/

还建议我是否必须更改服务器端脚本中的某些内容才能正确解码

【问题讨论】:

  • 它对我有用...我明白了:&name=test&id=1234&xyz=entertainment+%26+games。能发个完整的代码sn-p吗?

标签: javascript url jquery parameters


【解决方案1】:

一点考虑:

可能错误是由“username”参数的“'abc'”值生成的...

url += "?username='abc'";

正确的做法应该是:

url += "?username=abc";

【讨论】:

    【解决方案2】:

    jQuery.param() 方法按预期进行编码。这个sn-p...:

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head><title></title>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
    <script type="text/javascript"><!--
    jQuery(function($){
        var params = {
            name: "test",
            id: 1234,
            xyz: "entertainment & games"
        };
    
        var url = ""
        url += "&" + $.param(params);
    
        alert(url);
    });
    //--></script>
    </head>
    <body>
    
    
    </body>
    </html>
    

    ...提醒这个:&amp;name=test&amp;id=1234&amp;xyz=entertainment+%26+games

    你没有说错误是什么,但值得注意的是有效的查询字符串应该以?而不是&amp;开头:

    var url = ""
    url += "?" + $.param(params);
    

    【讨论】:

    • 嘿,谢谢...我的代码有问题。实际上,内容是动态填充在我的“娱乐和游戏”出现的“li”元素中,我正在使用 $(“li”).html() 阅读,所以它返回了类似“娱乐和游戏”的内容,然后我把同样的东西放在 $.param() 中。现在我用 $("li").text() 改变了它。 BTY 谢谢:)
    猜你喜欢
    • 1970-01-01
    • 2015-02-11
    • 1970-01-01
    • 2011-02-19
    • 2017-09-20
    • 2019-04-28
    • 1970-01-01
    • 2021-10-24
    • 2012-01-08
    相关资源
    最近更新 更多