У меня есть PHP-скрипт (ajax.php), который загружает контент из базы данных MySQL. Этот скрипт обновляет новый контент каждые N секунд через AJAX. Содержимое AJAX имеет три ссылки, одна из которых предназначена для архивирования строки в MySQL. Когда пользователь нажимает кнопку архива, я хочу, чтобы открылось диалоговое окно jQueryUI, подтверждающее удаление. Нажатие на отмену будет прервано, в то время как OK вызовет отправку AJAX для удаления строки из MySQL. Удаление строки из таблицы с подтверждением модальной формы (jQuery UI)? это пример диалогового окна половины того, что я хочу сделать. Мне нужно, чтобы это работало вместе с ajax / refresh.
Из-за того, что AJAX загружает саму ссылку, я не могу запустить диалоговое окно (или сценарий удаления). Как загрузить скрипт диалога и выполнить отправку удаления AJAX? Я пытаюсь использовать GlobalEval, но я не понимаю документацию. Примеры, которые я нашел, похоже, предназначены только для установки переменных. Следующий скрипт — это то, из чего я пытаюсь его собрать:
var id = $('.refreshN').data('id');
var table = $('.refreshN').data('table');
var rtime = $('.refreshN').data('time');
$('.refreshN').load('ajax.php?id='+id+'&table='+table).fadeIn("slow");
var autoLoad = setInterval(
function ()
{
$('.refreshN').load('ajax.php?id='+id+'&table='+table).fadeIn(5000);
var script = $(function (){
$('.modalLink').click(function () {
$('#dialog').dialog('open');
return false;
});
});
eval(script);
}, rtime); // refresh page every N seconds
Определите переменную script
с нормальной функцией JavaScript и добавить ()
выполнить это.
Попробуйте это вместо вашего текущего JS:
var id = $('.refreshN').data('id');
var table = $('.refreshN').data('table');
var rtime = $('.refreshN').data('time');
$('.refreshN').load('ajax.php?id='+id+'&table='+table).fadeIn("slow");
var autoLoad = setInterval(
function ()
{
$('.refreshN').load('ajax.php?id='+id+'&table='+table).fadeIn(5000);
}, rtime); // refresh page every N seconds
$(document).on('click','.modalLink',function(e){
e.preventDefault();
$('#dialog').dialog('open');
})
Других решений пока нет …