Jan
16
jQuery, $.getJson, $.ajax и все, все, все…
1 балл2 балла3 балла4 балла5 баллов (стать первым, кто оценил!)
Loading ... Loading ...

jQueryДо этого я работал только с Prototype, особо jQuery не пользовался, хотя и использовал пару вполне успешно.

В проекте, в котором я сейчас работаю, все построено на Zend Framework + JQuery. Соответственно приходиться сталкиваться теперь довольно часто с jQuery.

Вчера мне понадобилась там одна фишка: нужно было получить данные через Ajax запрос и дальше сделать с ними некоторые манипуляции (обрезание строки и т.д, не суть важно) и вывести клиенту.

Недолго думая, была сделана такая конструкция:


$.getJSON(’<?=$this->newsLetterUrl(’content-start’)?>/’,
 { load_eds_data: 1, idpage: $(’#eds_ref-key’).val(), ajax: ’true’},
 function(data) {
 subTitle = ’Dates: ’+data.date_text + ’ Venue: ’ + data.xvenue;
 });

Удивление наступило позже, когда я понял, что переменная subTitle не видна после этого и не доступна.

Полез в гугл, начал искать, что ж это за фигня получается, что нельзя в переменную записать данные после ajax запроса.

Оказалось, что проблема … в асинхронности запроса $.getJson и для того, чтобы получить нужное мне, конструкцию надо заменить на такую:


$.ajax({
 async: false,
 data: { load_eds_data: 1, idpage: $(’#eds_ref-key’).val(), ajax: ’true’},
 dataType : «json»,
 url: ’newsLetterUrl(’content-start’)?>/’,
 success: function(data) {
 subTitle = ’Dates: ’+data.date_text + ’ Venue: ’ + data.xvenue;
 }
});

указав таким образом, что нам нужен неасинхронный запрос. Теперь переменная subTitle видна поза данной конструкцией! И ее можно использовать дальше, как угодно.

Самое интересное, что в prototype таких проблем у меня вообще не возникало. Видимо связано с особенностями реализации библиотеки.

Возможно кому-то пригодится, когда столкнетесь с подобной задачей.



Добавить в:news2.ru Google Delicious Забобрить эту страницу! Добавить на Newsland.ru Добавить на СМИ2 Добавить на RUmarkz Добавить на Ваау! Добавить на rucity.com Добавить в закладки МоёМесто.ru Добавить на Habr Добавить на Moi Novosti Добавить страницу к Mister Wong Добавить на Moikrug Добавить на Myscoop Добавить на 100zakladok

Похожие заметки


Комментарии (16) на “jQuery, $.getJson, $.ajax и все, все, все…”

  1. Steward написал:
    16.01.2010 в 17:32
    Цитировать
  2. Станислав Малкин написал:
    16.01.2010 в 17:39
    Цитировать
  3. Steward написал:
    16.01.2010 в 17:46
    Цитировать
  4. Станислав Малкин написал:
    16.01.2010 в 18:06
    Цитировать
  5. Steward написал:
    16.01.2010 в 18:18
    Цитировать
  6. Станислав Малкин написал:
    16.01.2010 в 18:29
    Цитировать
  7. Steward написал:
    16.01.2010 в 18:38
    Цитировать
  8. Станислав Малкин написал:
    16.01.2010 в 18:43
    Цитировать
  9. Станислав Малкин написал:
    16.01.2010 в 18:46
    Цитировать
  10. Steward написал:
    16.01.2010 в 18:53
    Цитировать
  11. naspeh написал:
    17.01.2010 в 14:46
    Цитировать
  12. naspeh написал:
    17.01.2010 в 14:47
    Цитировать
  13. zerkms написал:
    18.01.2010 в 03:31
    Цитировать
  14. naspeh написал:
    18.01.2010 в 08:57
    Цитировать
  15. Станислав Малкин написал:
    15.02.2010 в 00:15
    Цитировать
  16. naspeh написал:
    15.02.2010 в 01:14
    Цитировать

Оставить комментарий

Указать свой сайт могут только зарегистрированные пользователи. Регистрация или вход.



Внимание!

XHTML: Вы можете использовать эти теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Quicktags:-->