从jquery中的href链接获取值

时间:2012-08-01 16:55:35

标签: jquery href

我正在尝试从位置href链接获取值,并且能够通过jquery获取位置href链接并且我使用

   var loc =$(location).attr('href');  

使用这个我得到了值

   localhost/example.com/buy.php?ev=product_search&type=sb&search=sony&cat=3

现在热门从这个链接获得类型,搜索和猫的价值?

例如

      type=sb
      search=sony
      cat=3

我的完整代码

 $("input:radio[name=type_radio]").click(function() {
 var loc =$(location).attr('href');

var value = $(this).val();
var type="condition";
alert(loc);
var dataString="value="+ value + "&type=" + type;
   $('.srchcntntagn').css('display','block');
     $('.by-product-list').addClass('opfxsc');
  $.ajax({
  type: "POST",
  url: "modules/buy&sell/load_search.php",
  data: dataString,
  cache: false,

  success: function(html){
  $('.by-product-list').removeClass('opfxsc');
  $('.by-product-list').html(html).fadeIn('slow');
  $('.srchcntntagn').css('display','none');
 }
});
}); 

3 个答案:

答案 0 :(得分:3)

我通常使用此处的“gup”功能:http://www.netlobo.com/url_query_string_javascript.html

您只需将该功能添加到您的脚本中,然后执行以下操作:

var type = gup( 'type' );

这也消除了使用.attr('href')调用来获取URL的需要。

该功能本身是:

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];
}

答案 1 :(得分:1)

location.search会为您提供网址的查询字符串(包括?)。

你可以脱掉吗?并将字符串拆分为&

上的数组
var queries = location.search.substr(1).split('&');

如果您使用不是当前网址的字符串,请尝试:

var queries = some_url_string.split('?')[1].split('&');

要么会给你一个这样的数组:

['type=sb','search=sony','cat=3']

然后,您可以在=上再次拆分每个元素以获取键/值对:

for(i=0;i<queries.length;i++) {
  queries[i] = queries[i].split('=');
}

哪个会给你:

[['type','sb'],['search','sony'],['cat','3']]

或者,创建一个查询对象:

var queryObj = {};
for(i=0;i<queries.length;i++) {
  var q = queries[i].split('=');
  queryObj[q[0]] = q[1];
}

这会给你一个像这样的对象:

{
  type: 'sb',
  search: 'sony',
  cat: '3'
}

但是,如果你真的需要个别变量,你可以这样做:

for(i=0;i<queries.length;i++) {
  var q = queries[i].split('=');
  window[q[0]] = q[1];
}

这将在全局范围内创建变量typesearchcat但是,我不建议这样做,因为您可能会覆盖现有变量,具体取决于您要解析的查询字符串。

答案 2 :(得分:1)

快速而简单 -

  1. 首先用问号拆分整个网址,将查询与网址分开
  2. 然后使用&对查询字符串进行另一次拆分。
  3. 每个元素的进一步拆分将使该值显示密钥。
  4. var url="localhost/example.com/buy.php?ev=product_search&type=sb&search=sony&cat=3";
    var queryString = url.split('?')[1];
    var variables = queryString.split('&');
    var varObj = {};
    $.each(variable,function(index,elem){
      var valueKeyPair = elem.split('=');
      varObj[valueKeyPair[0]] = valueKeyPair[1];
    });
    

    varObj现在包含您需要的所有信息。

    Object
      cat: "3"
      ev: "product_search"
      search: "sony"
      type: "sb"
    

    例如,要访问cat值,您只需使用varObj['cat']