使用jquery或本机javascript函数编码URL(包括&等字符)?

时间:2013-03-09 05:10:07

标签: javascript jquery encoding

我有一个隐藏的参数形式,其值为

custAddress=CustomerAddress.do?fisrtName=scott&lastName=Miles

我想在发送之前对其进行编码,以便像&可以用%26 etch

代替

我尝试使用javascript内置encodeURI(“urlToencode”),但不编码像&?

这样的字符

2 个答案:

答案 0 :(得分:4)

试试这段代码,

encodeURIComponent("fisrtName=scott&lastName=Miles");

答案 1 :(得分:1)

使用https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/encodeURIComponent

您需要在URL查询字符串的每个动态部分(名称和值)上调用它。所以问题是custAddress=CustomerAddress.do?fisrtName=scott&lastName=Miles中的URI组件是什么?由于您在=之前有?

,因此它看起来并不像网址

我能说的最有意义的是完整的URL就像是

http://myserver/file.do?custAddress=CustomerAddress.do?fisrtName=scott&lastName=Miles

在这种情况下,您应该像

一样构建您的网址
var custAddress = "CustomerAddress.do?fisrtName=scott&lastName=Miles";
var initialPath= "/path/to/file.do?";
var url = initialPath + "custAddress=" + encodeURIComponent(custAddress);

由于您提到jQuery,您可以使用$.param,看起来更干净并为您编码,您可以一次为其提供多个查询参数

var url  = initialPath + $.param({
    custAdrress: custAddress, 
    otherParam: "paramVal",
    // Both the param name and value need to be encoded and $.param does that for you
    "funny Name & Param": "funny & value ="
});