JQuery & amp; AJAX: предотвратите дефолт по ссылке, запустите запрос AJAX, затем перейдите по этой ссылке

У меня есть эта, по-видимому, «простая» задача, которая абсолютно пинает меня в задницу.

Моя цель состоит в том, чтобы, когда пользователь щелкает ссылку, я запрещаю использование по умолчанию, запускаю на нем функцию ajax и затем переходу по этой ссылке (т. Е. Возобновить работу по умолчанию). Единственное, что я могу заставить работать, — это захватить href ссылки и затем следовать с помощью window.location — это не идеально, так как он не определяет, решил ли пользователь открыть в новом окне / вкладке или в то же самое окно / вкладка; также я думаю, что должен быть лучший путь.

Однако происходит то, что по умолчанию это предотвращается, функция AJAX запускается, но затем ссылка не отслеживается. То, что я спрашиваю: как смоделировать ссылку нажмите после функция запустилась?

HTML

<a href="some_href" data-id="789">This is the link</a>

JQuery

$(document).on('click', 'a', function(e, options){

// setup our options
options = options || {};

// get some details from the link
var this_href = $(this).attr('href');
var this_id = $(this).data('id');

// if options aren't set and this link has a data-id attribute
if(!options.stuff_done && $(this_id).length){

e.preventDefault(); // prevent link following

// run some ajax
$.ajax({
url: myAjax.ajax_url,
type: 'post',
data: {
action : 'a_php_function',
post_id : this_id
},
success: function(response) {
// do stuff
}).then(function(){
$(this).trigger('click', { stuff_done: true });
});

} else {
// else if it doesn't have a data-id, do default
}
});

Контекст: Проверка наличия значения (‘data-id’) в массиве с использованием PHP / AJAX и удаление его. Этот идентификатор данных относится к идентификатору записи в WordPress и должен быть удален, когда пользователь переходит по ссылке на эту запись.

Следовательно — пользователь нажимает на ссылку, data-id проверяется, удаляется / не удаляется из массива, ссылка следует.

1

Решение

Сначала дайте вашему href идентификатор, например, так:

<a href="some_href" data-id="789" id='#some-link'>This is the link</a>

Затем смоделируйте щелчок мышью в своей части успеха ajax:

...
success: function(response) {
$('#some-link').click();
})
...

Вы можете изучить response до срабатывания клика. Кроме того, я не думаю, что вам нужно .then и все такое.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]