更改location.href后执行一个函数

时间:2016-06-09 03:13:37

标签: javascript jquery

我想在重定向页面后调用一个函数。

在我的函数中,我放了一个参数,这是一个ID但是当我检查控制台时它不会显示。我知道我可以通过点击事件运行它,但我不会从上一页获得ID参数。

有没有办法完成它?

代码:

function encode(item_id){
  $('.js-encode').click(function(){
    var url = $(this).data('url');
    location.href = url; // new url
    save(item_id); // call function after new url finish loading
  });
}

function save(item_id){
  console.log(item_id); // check if there's item_id exists
}

3 个答案:

答案 0 :(得分:2)

我同意Katana的评论。重定向语句之后的任何内容都不会运行,因为页面本身正在重定向。我建议仍然获得item_id并绕过该障碍的一种方法是将item_id作为参数包含在重定向url中。然后,在新页面上,将该参数解析出url并保存item_id。

来自Cory Laviska's article on Parsing URLs in Javascript的一个很好的示例,展示了如何从URL获取各个参数。

构建到Manish' answer

当前页面上的功能:

function encode(item_id){
    $('.js-encode').click(function(){
    var url = $(this).data('url');
    location.href = url+'?saved_item_id='+item_id; // new url
    });
}

REDIRECTED页面上的功能(假设您只有一个参数)

$( document ).ready(function() {
     var url = $(this).data('url');
     var item_id = url.queryKey['saved_item_id'];
     save(item_id);
 });

可能需要几个tweek,因为我没有测试代码,但希望它能让你走上正轨。 :)

希望这会有所帮助。如果它有助于和/或回答您的问题,请选择答案和投票! :D如果您有任何疑问,请随时告诉我

答案 1 :(得分:2)

试试这个

容器是您执行操作的页面部分。

function encode(item_id){
  $('.js-encode').click(function(){
    var url = $(this).data('url');
    $("#container").load(url,function(){
        // other stuffs and functionalities
         save(item_id); // call function after new url finish loading
    });
  });
}

答案 2 :(得分:1)

你可以尝试这样的事情。

function encode(item_id){
  $('.js-encode').click(function(){
    var url = $(this).data('url');
    location.href = url+'?saved_item_id='+item_id; // new url
    //save(item_id); // call function after new url finish loading
  });
}

/*(function save(item_id){
  console.log(item_id); // check if there's item_id exists
}*/

此外,在新的重定向网址上,您可以获得在上一页中附加到网址的item_id。

希望这可能会有所帮助。