2016-06-09 4 views
0

Я хочу вызвать функцию после перенаправления страницы.Выполните функцию после изменения location.href

Внутри моей функции я помещаю параметр, который является идентификатором, но когда я проверяю консоль, она не отображается. Я знаю, что смогу запустить его через событие click, но я не получу идентификационный параметр с предыдущей страницы.

Есть ли способ сделать это?

Код:

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 
} 
+6

потому что вы перенаправлены на другую страницу. Javascripts на предыдущей странице не будет применен к новой странице. – Sherlock

+0

Есть ли способ ее получить? – claudios

+0

Вам нужно сначала сначала выполнить команду save, а затем выполнить перенаправление. –

ответ

1

Я согласен с комментарием Катаны. Все, что после вашего оператора перенаправления не будет запущено, поскольку сама страница перенаправляется. Один из способов, который я предложил бы по-прежнему получить 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 
    }); 
} 

Функция на Перенаправление (если у вас есть только один параметр)

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

Это может потребоваться несколько твиков, потому что я не тестировал код, но, надеюсь, это поможет вам на правильном пути. :)

Надеюсь, это поможет. Если это поможет и/или ответит на ваш вопрос, выберите в качестве ответа и голосования! : D Не стесняйтесь, дайте мне знать, если у вас есть какие-либо вопросы

+0

Спасибо за внимание, но как я могу загрузить функцию сохранения после перенаправления? – claudios

+0

Обновлен код для включения функций для обеих страниц. :) –

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 
}*/ 

Кроме того, в отношении нового перенаправленного URL-адреса вы можете получить item_id, который был добавлен в URL-адрес на предыдущей странице.

Надеюсь, это поможет.

+0

Я получаю вашу точку зрения, но как я могу вызвать функцию после загрузки страницы? Я хотел вызвать функцию после того, как произошло перенаправление. – claudios

+0

Вы можете проверить для saved_item_id для пустого или 'typeof (saved_item_id)! = 'Undefined'' Если этот файл saved_item_id не пуст или существует, вы можете просто вызвать вашу функцию. :-) – Manish

2

Try это один

Контейнер участок страницы, на которой вы выполняете действие.

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 
    }); 
    }); 
} 
+0

Могу ли я передавать информацию с загруженного URL-адреса обратно на верхний уровень? – Shadoath

Смежные вопросы