0

我正在尝试从位置 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');
 }
});
}); 
4

3 回答 3

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];
}
于 2012-08-01T17:03:38.137 回答
1

快速简单 -

  1. 首先用问号拆分整个 url,以将查询与 URL 分开
  2. 然后使用 . 对查询字符串进行另一个拆分&
  3. 每个元素上的进一步拆分将从值中分离出键。
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'].

于 2012-08-01T17:00:56.763 回答
1

location.search将为您提供 url 的查询字符串(包括?)。

你可以剥离 ? 并将字符串拆分为数组&

var queries = location.search.substr(1).split('&');

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

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

这将在全局范围内创建变量typesearch和。但是,我不建议这样做,因为您可能会根据正在解析的查询字符串覆盖现有变量。cat

于 2012-08-01T16:59:02.297 回答