根据url hash

时间:2018-04-04 14:08:26

标签: jquery json ajax onclick

我想根据点击加载不同的json数据:

<a href="#jsonAlpha">Get Alpha json</a>
<a href="#jsonBeta">Get Beta json</a>
// and so on.

js:

$( "a" ).click(function() {
  $.ajax({
    url: 'domain.com/json?source=jsonAlpha',
    success: function( jsonData ) {
      console.log(jsonData)
    }
  })
});

因此链接中的每个哈希都与json源查询匹配。

检测点击链接中的哈希值然后将哈希值传递给json url的最佳方法是什么?

换句话说:

if clicked link is href == jsonAlpha add this hash into ajaxUrl

你明白我的意思吗?

2 个答案:

答案 0 :(得分:1)

要实现此目的,请在hashchange上收听window事件。如果用户单击包含URL片段的链接,或者他们已将包含片段的URL键入浏览器的URL栏,则会发生这种情况:

$(window).on('hashchange', function(e) {
  $.ajax({
    type: 'get',
    url: 'http://www.yourdomain.com/json',
    data: { 
      source: window.location.hash.substring(1)
    },
    success: function( jsonData ) {
      console.log(jsonData)
    }
  })
});

请注意,我将方案添加到跨域请求所需的URL中。另请注意,如果这是跨域请求,则接收域将需要在响应中包含CORS标头,否则您将被Same Origin Policy

阻止处理响应

答案 1 :(得分:0)

您可以使用attr()函数获取所点击锚标记的href。 假设您要在#中附加url前面的文字。

$( "a" ).click(function() {
  $.ajax({
    url: 'domain.com/json?source='+$(this).attr('href').slice(1),
    success: function( jsonData ) {
      console.log(jsonData)
    }
  })
});