从href属性获取查询字符串参数

时间:2018-12-23 08:07:05

标签: javascript jquery

我希望能够获取变量view_data_id的值并将其存储在另一个名为view_data_id_fk的变量中。

最后一行代码似乎无法正常工作,所以我想知道如何才能做到这一点?

var view_data_id = val['view_data_id'];

// How to obtain the value of view_data_id?
<td><a href="datamapmain.php?view_data_id='+view_data_id+'" 
class="link">Link</a></td>

//Will be passed on to ajax file
view_data_id_fk:$('.link').val();

2 个答案:

答案 0 :(得分:2)

您可以使用jQuery和attr(..)方法(或仅使用标准JavaScript)和正则表达式来获取值:

jQuery:

var q = $('.link').attr('href').match(new RegExp('[?&]view_data_id=([^&#]*)'));
var view_data_id_fk = q ? q[1] : '';

标准JavaScript:

var q = document.querySelector('.link').href.match(new RegExp('[?&]view_data_id=([^&#]*)'));
var view_data_id_fk = q ? q[1] : '';

[已编辑,感谢Alexei Levenkov]

使用URLSearchParams API是一种标准的方法,但是它对浏览器的支持有限(caniuseMDN):

var q = new URLSearchParams(document.querySelector('.link').href).get('view_data_id');
var view_data_id_fk = q || '';

答案 1 :(得分:0)

创建如下所示的可重用函数

function getUrlParam(url,name){
  var regex = new RegExp('[\\?&]' + name + '=([^&#]*)');
  var results = regex.exec(url);
  return results === null ? '' : 
                     decodeURIComponent(results[1]).replace(/\+/g,'');
}

使用JQuery var url = $('.link').attr('href')

获取href属性值
var view_data_id_fk = getUrlParam(url, 'view_data_id');