2009-05-14 2 views
1

Мне интересно, как захватить все ссылки на странице с помощью jQuery. Идея похожа на Facebook. В Facebook, если вы нажмете на ссылку, она захватывает ссылку и загружает одну и ту же ссылку с помощью ajax. Только при открытии ссылки на новой вкладке и т. Д. Она будет загружать страницу с помощью обычного вызова.Захват всех ссылок, включая отправку формы

Любая подсказка о том, как достичь такой функциональности? Я уверен, что захват ссылок не должен быть проблемой, но что делать с представлениями формы захвата, а затем отправлять все данные через ajax и затем отображать результаты?

Есть ли какой-либо плагин, который уже существует?

Спасибо за ваше время.

ответ

1

Alec,

Вы можете определенно сделать это.

У меня есть форма, которая обрабатывается именно таким образом. Он использует плагин jquery form kgiannakakis, упомянутый выше. Пример javascript ниже показывает, как это может работать.

$("form").ajaxForm({ 
    beforeSubmit: function(){ 
     //optional: startup a throbber to indicate form is being processed 
     var _valid = true; 
     var _msg = ''; 
     //optional: validation code goes here. Example below checks all input 
     //elements with rel attribute set to required to make sure they are not empty 
     $(":input [rel='required']").each(function(i){ 
      if (this.value == '') { 
       _valid = false; 
       _msg += this.name + " may not be empty.\n"; 
       $(this).addClass("error");  
      } 
     }); 
     alert(_msg); 
     return _valid; 
    }, 
    success: function(response){ 
     //success here means that the HTTP response code indicated success 
     //process response: example assumes JSON response 
     $("body").prepend('<div id="message" class="' + response.status + '"></div>'); 
     $("#message").text(response.message).fadeIn("slow", function(){ 
       $(this).fadeOut("slow").remove(); 
     }); 
    } 
}); 
0

Form plug-in может превратить правильную форму с Ajax один:

$("#myForm").ajaxForm(
    {beforeSubmit: validate, success: showResponse}); 

Было бы трудно сделать то, что вы хотите, однако для произвольной формы. Что делать, если форма использует проверку или отправляется Ajax для начала? То же самое относится и к ссылкам. Что делать, если есть несколько сценариев навигации javascript (window.location = Url)? Если у вас нет полного контроля над страницей, будет сложно делать то, что вы хотите.

+0

У меня есть контроль над страницей. Но я вообще не хочу изменять страницу. Я хочу добавить плагин jquery, который автоматически сделает все. –

0

Обычно такие страницы, как facebook, выполняют каждое событие и каждую форму отдельно, так как файлы на стороне сервера обычно устанавливаются для каждой отдельной операции/группы операций. Я сомневаюсь, что будет чистый способ конвертировать страницу с помощью только подключаемого модуля. И если это так, я вижу много накладных расходов.

Вы можете сделать это вручную, но опять же это злоупотребление Ajax. Это не флеш, и с использованием ajax для всех серверных коммуникаций вы сталкиваетесь с множеством проблем.

  • Отсутствие отслеживания истории.
  • Наблюдение за параллельными событиями и их результатами.
  • Общение с пользователем о том, что страница меняется.
  • Пользователи с javascript отключен.
  • И многое другое ...
Смежные вопросы