Вместо ссылки — ajax?

Вот у меня на странице есть ссылка.

<a href="?channel=5&command=on">Включить</a><br>

Как мне проще всего преврать ее в ajax, т.е. сделать запрос без перезагрузки страницы? Результат можно не возвращать.
  • Вопрос задан
  • 14171 просмотр
Пригласить эксперта
Ответы на вопрос 3
TheMengzor
@TheMengzor
Помечаете ajax ссылки классом, например, .ajax, затем колбасите следующее:
$(function()
{
    $('body').on('click', 'a.ajax', function(event) // вешаем обработчик на все ссылки, даже созданные после загрузки страницы
    {
        event.preventDefault(); // предотвращаем штатное действие, то есть переход по ссылке
        $.get($(this).attr('href'), function(data) // отправляем GET запрос на href, указанный в ссылке
        {
            console.log(data); // выводим полученные данные в консоль.
        };
    };
});

На сервере в обработку запроса вложите условие с проверкой на XMLHttpRequest, поскольку ajax запросы имеют HTTP заголовок, сообщающий о том, что это XMLHttpRequest, и отдавайте для запросов с этим заголовком необходимые именно для ajax ответы, а для всех остальных — обычный ответ.
Ответ написан
$(function () {
    $('a').click(function () {
       $.post('адрес обработчика к примеру aj.php', {add:'привет мир!'}, function (data) {
         alert(data)
       })
    })
})


в aj.php

echo $_POST['add']; exit;


не забудьте подключить jQuery
Ответ написан
@esenin
Лучше конечно превратить ссылку в Ajax-ссылку.

Это делается путем добавления атрибута attr-href:

var a = $('a');
(function () {
  a.attr("attr-href", a.attr('href'))
    .attr("href", "javascript:;")
    .on("click.ajax", function (event) {
      var link = a.attr("attr-href");
      $.ajax(link, ....);
      return false;
    });  
}());


Если JS отключен, работать будет через перезагрузку страницы. Если включен — через XHR.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы