Jquery查询参数解析- "="在查询字符串中,将查询字符串分割
jquery query parameter parsing - "=" in query string breaks query string up
我正在尝试使用这个jquery插件和这个示例查询字符串从查询字符串解析参数:
http://test.com/?xnJTqqWEclJnnPEvWH&cid=3DF3-00-=63-D4-DA-2F-91-6B-39-39-75-E4-C1-B7-28-12&mid=3D93-36-14-46-4D-52-9E-48-17-=6A-50-13-56-FA-0A-06&PROMO_MONTH=3D201106
使用插件代码:
console.log($.getQueryParam( "cid" ));
cid在第一次出现"="符号时被除法-所以不是:
3DF3-00-=63-D4-DA-2F-91-6B-39-39-75-E4-C1-B7-28-12
我得到
3DF3-00-
这是正常行为吗?等号在这个查询字符串中有什么特别的作用吗?如果不是,我如何解析这个查询字符串以获得整个参数?
使用gup代替。我看到它在很多地方使用,效果很好。这很简单。请注意,我在代码中做了一个小的改变来插入url。下面的代码是你应该实际使用的。
http://jsfiddle.net/mrtsherman/trqJ8/gup('cid');
function gup( name )
{
name = name.replace(/['[]/,"'''[").replace(/[']]/,"''']");
var regexS = "[''?&]"+name+"=([^&#]*)";
var regex = new RegExp( regexS );
var results = regex.exec( window.location.href );
if( results == null )
return "";
else
return results[1];
}
插件本身并不是为了容纳这样的字符串而编写的。罪魁祸首是下面这段代码…
if (params[0] == param) {
return params[1] || '';
}
在此步骤之前,插件脚本在等号上执行split()
创建数组。上面的代码片段应该像下面这样修改,以使您的查询检索工作…
if (params[0] == param) {
var paramOut = '';
for (var p = 1; p < params.length; p++) {
paramOut += params[p] + '=';
}
return paramOut.substr(0, paramOut.length - 1); // to remove the trailing equal sign
} else {
return '';
}
这是我修改后的插件补丁,以防你仍然有兴趣使用它…
(function($){$.getQueryParam=function(param){var pairs=location.search.substring(1).split('&');for(var i=0;i<pairs.length;i++){var params=pairs[i].split('=');if(params[0]==param){var paramOut='';for(var p=1;p<params.length;p++){paramOut+=params[p]+'=';}return paramOut.substr(0, paramOut.length-1);}else{return '';}}return undefined;};})(jQuery);
是的。"="用作部分查询的分隔符,因此您应该转义它。Yandex搜索引擎是这样做的:http://yandex.ru/yandsearch?text=%3D
相关文章:
- 如何有效地将游戏数据存储在URL查询字符串中
- 从查询字符串参数推断出正确的数据类型
- AngularJS:获取链接中没有哈希的查询字符串值
- AngularJS,如何更改查询字符串
- 如何将activeadmin查询字符串传递给batch_action
- 如何从查询字符串中的输入字段发回文本
- Django在使用AJAX时没有接收到新的查询字符串
- 使用查询字符串方法清除浏览器缓存
- 用于刷新的Javascript更改查询字符串
- 我想将查询字符串变量添加到JSON名称/值对中
- 将查询字符串值从页面传递 asp.net 到 iframe
- jqueryajax生成查询字符串,如果未定义则不通过
- 如何将查询字符串传递到HTML框架
- AngularJs将查询字符串发布到c#控制器
- Jquery - 从查询字符串中获取“#”值之后,而不是在“?”符号值之后获取
- 在 JavaScript 中将查询字符串传递给 Web 服务 (ASP.NET)
- 在查询字符串中查找 where 子句
- POST encodeURI查询字符串内部服务器错误 500
- JavaScript:从具有使用 # 符号的路由的 URL 获取查询字符串
- 更改链接 URL 中的路径名,同时保持查询字符串不变