使用Javascript,我想生成一个页面的链接。页面的参数在我用JSON序列化的Javascript数组中。
所以我想生成一个这样的URL:
http://example.com/?data="MY_JSON_ARRAY_HERE"
如何转义JSON字符串(序列化的数组)才能将其作为参数包含在URL中?
如果有使用JQuery的解决方案,我会很高兴。
注意:是的,页面的参数需要在一个数组中,因为有很多这样的参数。我想之后我会使用bit.ly来缩短链接。
发布于 2011-07-24 21:55:04
encodeURIComponent(JSON.stringify(object_to_be_serialised))
发布于 2011-07-24 21:55:37
您可以使用encodeURIComponent
安全地对查询字符串的某些部分进行URL编码:
var array = JSON.stringify([ 'foo', 'bar' ]);
var url = 'http://example.com/?data=' + encodeURIComponent(array);
或者,如果您将其作为AJAX请求发送:
var array = JSON.stringify([ 'foo', 'bar' ]);
$.ajax({
url: 'http://example.com/',
type: 'GET',
data: { data: array },
success: function(result) {
// process the results
}
});
发布于 2013-03-20 00:56:54
我也想做同样的事情。对我来说问题是我的网址太长了。我今天找到了一个使用Bruno Jouhier's jsUrl.js library的解决方案。
我还没有完全测试过它。但是,下面的示例显示了使用3种不同方法对同一大对象进行编码后输出的字符串的字符长度:
使用jQuery.param
JSON.stringify + encodeURIComponent
JSURL.stringify
的
显然,对于urlEncoding一个js对象,JSURL的格式是最优化的。
https://groups.google.com/forum/?fromgroups=#!topic/nodejs/ivdZuGCF86Q上的线程显示了编码和解析的基准测试。
注释:经过测试,jsurl.js库似乎使用了ECMAScript 5函数,如Object.keys、Array.map和Array.filter。因此,它只能在现代浏览器上运行(不适用于IE8或更低版本)。然而,这些函数是polyfills,这将使其与更多的浏览器兼容。
适用于阵列的
https://stackoverflow.com/questions/6807180
复制相似问题