2016-05-15 2 views
-1

Каков наилучший способ запроса данных через AJAX или через AJAX без сохранения других ресурсов/ресурсов, загружаемых на страницу. Проблема заключается в том, что необходимы возвращенные данные/информация из вашего вызова AJAX. Например, возвращаемые данные будут использоваться для заполнения/создания вашей HTML-страницы.Выполнение вызова AJAX без удержания/перехвата загрузки страницы

Практический пример:

$.get("pageURI", {getVar:getVal}, function(data){ 
    var response = data; 
}); 
  1. Вы можете обернуть код $ (документ), готовый (функция() {}); и генерировать HTML, когда документ готов, но опять же, не окружая логику генерации страницы в вызове AJAX, поэтому внутри $ .get (...) ..., как вы убедитесь, что страница заполняется только вашим контентом соответственно, только когда вы знаете, что ответ имеет ожидаемые данные, таким образом, undefined.
  2. У меня нет проблемы с кодом, находящимся внутри оболочки вызова AJAX, но что, если у вас много кода, зависящего от ответа, другими словами, у вас есть около 10-15 длинных функций и другая логика? желательно, чтобы они были обернуты вокруг вашего звонка AJAX?
  3. Я также понимаю, что можно задать ответ как свойство окна (window.response)/глобальную переменную и использовать его только после полной загрузки страницы, например $ (window) .bind ("load", function() {}) , поскольку он может использоваться в различных местах на протяжении всего жизненного цикла программы, но является ли это хорошей практикой кодирования?

Спасибо за ваш ответ.

+1

Я не следую. AJAX-вызовы асинхронны и не задерживают загрузку или рендеринг страниц. – Wainage

+0

Hi Wainage, мой вопрос может быть неясным и извините за это, но я имею в виду, как я уже неоднократно заявлял, и, я думаю, явным образом на части моего вопроса, если вы посмотрите на мой фрагмент кода, вы увидите, что там ответ устанавливается на данные внутри функции $ .get, если вы попытаетесь использовать эту переменную (ответ) вне вашего вызова, вы получите неопределенное значение, а не ожидаемое значение .... это моя проблема ... –

+2

Нет Кстати, вам нужно подождать, пока это станет доступным, так как AJAX требует времени. Обновите свою страницу из этого обратного вызова. – Wainage

ответ

0

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

var jqxhr = $.get("/twiddle-bits", function(data, status, jqXHR) { 
    // Here is where you call functions that do the second-stage data population 
    apply_changes_after_ajax_call(); 
    update_some_other_things(); 
}) 
.fail(function() { 
    show_error_messages(); 
}); 

Это должно делать то, что вы ищете. HTML-страница будет отображаться до вызова Ajax, и вы сможете обновить DOM, как только у вас появятся результаты. Вот как это работает с динамическими страницами, подобными этому.

+0

Спасибо, Майкл, я знаю, что вы предлагаете, я хотел знать, есть ли другие способы обойти это, но я, вероятно, передумал и достиг точки, в которой я думал, что в этом могут быть лучшие способы. Thanks –

+0

@HlawuM Единственный способ - реализовать синхронный рендеринг, и вы захотите сделать это на сервере. Использование Ajax явно говорит о том, что вы хотите асинхронное раздирание на клиенте, поэтому вам нужно выбрать, какой подход соответствует вашей ситуации. –

+0

Хорошо, круто. Посмотрите на это. Благодаря! –