Comments 31
Скромно и со вкусом.
JSONP как два пальца пи-пи.
Какую цель преследовал ваш топик?
Кстати, я правильно понимаю, что этот скрипт поддерживает только синхронный ajax? Не айс.
в данном случае это не тот ajax, здесь загрузка данных осуществляется через подключение к страницы скрипта который и передает данные в функцию JSONP(«test.php?callback», function (a, b, c)
таким образом он асинхронный, т.е. поток не ждет данных, а при их поступлении просто выполняется функция callback
таким образом он асинхронный, т.е. поток не ждет данных, а при их поступлении просто выполняется функция callback
Я знаю, что такое асинхронный, jsonp и всё остальное.
Когда я реализовывал jsonp через тег script, то он блокировал выполнение js до получения ответа.
Судя по коду — реализовано именно так.
Когда я реализовывал jsonp через тег script, то он блокировал выполнение js до получения ответа.
Судя по коду — реализовано именно так.
А JSONP можно как-то по-другому организовать? Всякие там аттрибуты script вроде defer и async не считаем.
Не знаю, как делается в «взрослых» фреймворках, но как на счет xhr+eval?
Вся фишка JSONP в кроссдоменности. Вставить src в script можно с любого домена, а xhr только по текущему.
Так что вставлять script и ждать когда оно отдуплится — единственный вариант. Другое дело, что свежие бровзеры умеют делать это асинхронно. Динозавры вроде IE6 — нет.
Так что вставлять script и ждать когда оно отдуплится — единственный вариант. Другое дело, что свежие бровзеры умеют делать это асинхронно. Динозавры вроде IE6 — нет.
Создание тега скрипт не блокирует работу скрипта, я как раз щас работаю таким способом, у меня логи пишутся на сторонний сервер через создание скрипта, работа не блокируется, тег скрипт грузится асинхронно, ничего не блокируется, код дальше работает
А если ошибка и контент не погрузился?
Непонятно зачем в глобальном неймспейсе срать калом в стиле __JSONP__12432354 для коллбеков. Да, оно потом пытается за собой подчистить, но в стареньких ие это работает не совсем хорошо.
Почему нельзя было в свой неймспейс напихать? Типа там JSONP.Callback12432354, например?
Почему нельзя было в свой неймспейс напихать? Типа там JSONP.Callback12432354, например?
У всех сплош jquery подключен (уже почти по умолчанию), он это умеет делать.
Вопрос: для каких целей мне пригодилась бы эта либа? (Это не наезд, просто хочу понять.)
Автор ты в каких случаях ею пользуешься?
Вопрос: для каких целей мне пригодилась бы эта либа? (Это не наезд, просто хочу понять.)
Автор ты в каких случаях ею пользуешься?
Не понимаю я стремления в каждый мало-мальский сайт «впихнуть» здоровенный фреймворк. Да, иногда это бывает необходимо, особенно на больших проектах, но в большинстве случаев можно обойтись без «монстра» типа jQuery.
Например: у меня в профиле ссылка на последний мой проект (сайт очень дорогого ресторана). Делал почти с нуля — первую рабочую версию сделал за 3 дня. В результате весь JS-код сайта весит ~9 Kib (ungzip ~27 Kib), включая мою реализацию querySelecor для IE (переписанный YASS). Сравните 29 Kib (jQuery, gzip) и 9 Kib!
Правда, т.к. сайт я делал за бесплатно, забросил его так и не доделав anchor navigation :(
Например: у меня в профиле ссылка на последний мой проект (сайт очень дорогого ресторана). Делал почти с нуля — первую рабочую версию сделал за 3 дня. В результате весь JS-код сайта весит ~9 Kib (ungzip ~27 Kib), включая мою реализацию querySelecor для IE (переписанный YASS). Сравните 29 Kib (jQuery, gzip) и 9 Kib!
Правда, т.к. сайт я делал за бесплатно, забросил его так и не доделав anchor navigation :(
Не понимаю причем тут разница в 20кб? (и то только при первой загрузке страницы, потом браузер кеширует)? Или этот сайт должен был быть высоконагруженным (что не так) или посетители сайта сидят с диалапа (что тоже не так — «сайт очень дорогого ресторана» значит посетители не нищии студенты).
Мое мнение, что этот «велосипед» только для увеличения энтропии :)
Мое мнение, что этот «велосипед» только для увеличения энтропии :)
Не холивара ради:
Обычно разница более существеннее, чем 20 KiB, т.к. на сайты добавляется ещё куча плугинов и собственно скрипт самого сайта.
Загрузка ~5 <script> (среднее кол-во на сайтах с использованием jQuery) происходит с заметной паузой, + цена HTTP-запроса немаловажна.
А по поводу диалапа, Вы не совсем правы — какая сейчас скорость мобильного интернета? Примерно, как когда-то у диалапа. А сайт без нагромождения jQuery'вских плугинов, легко и непринуждённо работает на мобильных устройствах (на моём не доделано, оптимизировано только для iPad). И не нужна никакая «облегченная», «мобильная» версия сайта.
Да и делал свой «велосипед» я с большим удовольствием :)
Обычно разница более существеннее, чем 20 KiB, т.к. на сайты добавляется ещё куча плугинов и собственно скрипт самого сайта.
Загрузка ~5 <script> (среднее кол-во на сайтах с использованием jQuery) происходит с заметной паузой, + цена HTTP-запроса немаловажна.
А по поводу диалапа, Вы не совсем правы — какая сейчас скорость мобильного интернета? Примерно, как когда-то у диалапа. А сайт без нагромождения jQuery'вских плугинов, легко и непринуждённо работает на мобильных устройствах (на моём не доделано, оптимизировано только для iPad). И не нужна никакая «облегченная», «мобильная» версия сайта.
Да и делал свой «велосипед» я с большим удовольствием :)
Для вашего сайта-ресторана подошло бы это
benalman.com/code/projects/jquery-bbq/examples/fragment-basic/
и сделали бы вы его явно быстрее, и анкорная навигация бы работала.
benalman.com/code/projects/jquery-bbq/examples/fragment-basic/
и сделали бы вы его явно быстрее, и анкорная навигация бы работала.
В данном конкретном примере есть существенный недостаток: не работает индексация частей страницы, которые «скрыты» за переключателями. А одним из пунктов моего ТЗ было: «Хорошая индексация сайта поисковыми системами Яндекс, Гугл и т.д.».
Хотя, может и можно сделать, чтобы всё работало как надо и индексировалось. Но, для меня было проще и быстрее написать всё с нуля, чем разбираться в «хитростях» jQuery плугинов, индексации сайтов основанных на jQuery и разработки мобильной версии сайта с использованием jQuery.
Хотя, может и можно сделать, чтобы всё работало как надо и индексировалось. Но, для меня было проще и быстрее написать всё с нуля, чем разбираться в «хитростях» jQuery плугинов, индексации сайтов основанных на jQuery и разработки мобильной версии сайта с использованием jQuery.
А должен быть у всех head.js подключен :-) Он тоже умеет это делать.
«У всех сплош jquery подключен (уже почти по умолчанию), он это умеет делать.» — это упалочный образ мыслей сравнимый с «у всех стоит виндоус и интернет эксплорер, зачем париться и изобретать что-то другое?».
До jquery были библиотеки, но становится популярной она. Так как было понятно для чего она нужна и какие проблемы решает лучше других.
Эта же библиотека никаких проблем не решает. Хороша для обучения, для собственного фана, пиара :)
Поэтому я и решил что для работы она не подходит, автор тоже не смог привести убедительный пример.
Эта же библиотека никаких проблем не решает. Хороша для обучения, для собственного фана, пиара :)
Поэтому я и решил что для работы она не подходит, автор тоже не смог привести убедительный пример.
Скажем так, кроме jquery есть и другие хорошие библиотеки.
Плюс, если задача — сделать один тычок в jsonp и успокоиться, применять жквери нецелесообразно. Проще на коленке в 5 строк написать свой jsonp.js и заюзать его.
Плюс, если задача — сделать один тычок в jsonp и успокоиться, применять жквери нецелесообразно. Проще на коленке в 5 строк написать свой jsonp.js и заюзать его.
.call(window, "Hello", "JSONP", "!!!")
Это должен возвращать сервер, я б руки поотрывал за такое =)
В ней не обрабатываются ошибки и не обрабатывается таймаут…
Толк от такой либы?… сомнительный…
Толк от такой либы?… сомнительный…
Thanks for information. I'm not sure that this will be enough for web application implementation. So I propose still use some frameworks like jQuery, etc.
Also if you are looking for some other implementation and usage of JSONP technology, go to geekproit.blogspot.com/2011/08/small-research-about-jsonp.html
Still JSONP has some disadvantages, like leak of error handling and request status, etc.
Also if you are looking for some other implementation and usage of JSONP technology, go to geekproit.blogspot.com/2011/08/small-research-about-jsonp.html
Still JSONP has some disadvantages, like leak of error handling and request status, etc.
Sign up to leave a comment.
Все что нужно для JSONP