AJAX-транспорт Script
Запросы способом Script подразумевают только GET и имеют сложности с отслеживанием ошибок. Но зато - их можно делать на любые домены,
что и составляет основную область применения этого транспорта.
Любые таги можно создавать через DOM и добавлять к документу. Если создать узел <script> со ссылкой на внешний исходник,
то при добавлении тэга в документ запустится процесс загрузки. А ответный javascript сервер генерирует динамически и кладет туда нужные данные.
Следующая функция добавляет такой тэг к документу, с нужным id и src. Она добавляет элементы в head, так что не будет работать, если head нету.
function attachScript(id, src){
var element = dojo.doc.createElement("script")
element.type = "text/javascript"
element.src = src
element.id = id
document.getElementsByTagName("head")[0].appendChild(element)
}
Например, вызов
attachScript('script1','/service/newMail.js?name=Vasya')
добавит в head документа тег:
<script src="/service/newMail.js?name=Vasya"></script>
Браузер тут же обработает тег: запросит newMail.js с заданного URL и выполнит.
Когда скрипт загрузится - он должен как-то объявить о себе, что данные подгружены и можно ими управлять.
Обычно для этого используется каллбэк, т.е в конце скрипта делается вызов специальной функции.
Чтобы четко указать, какому скрипту - какой каллбэк вызывать, имя функции передается отдельным параметром. Например,
...
// задать обработчик
var handler = function (data) { ... }
// получили номер для следующего скрипта
handlerId++
// на самом деле каллбек - не сам обработчик, а служебная функция,
// которая дополнительно обработает успешную загрузку и почистит ставший лишним тэг script
scriptHandlers['script_'+handlerId] = makeHandler(handler)
attachScript(handlerId, "/service/newMail.js?name=Vasya&callback=scriptHandlers.script_"+handlerId)
Сервер смотрит на значение параметра callback, и добавляет к скрипту вызов scriptHandlers.script_XXX, где script_XXX - значение параметра callback.
Обычно, сервер просто отдает данные клиенту, отвечая на запрос вызовом типа
scriptHandlers.script_XXX({sender:"Petya",senderId:6})
Такой формат называют JSONP: JSON with Padding, т.к для обмена данными используются javascript-объекты (не XML и т.п), и используется
дополнительная функция (padding).
Длина URL в GET-запросах ограничена. Она зависит от браузера-сервера, приблизительно 1kb - безопасное значение.
Поэтому для отправки на сервер бОльших фрагментов используется multipart-протокол.
Каждый запрос снабжается двумя параметрами: уникальным ID и номером части part.
Первый элемент multipart-запроса имеет part=1, последний - не имеет параметра part. Сервер, таким образом, может подсчитывать полученные куски.
При каждом запросе создается таймер. При успешном запросе - таймер очищается. Через 10 секунд таймер срабатывает и генерирует ошибку запроса.
Такая обработка - гораздо хуже, чем есть в iframe или XmlHttpRequest, где ошибка со стороны сервера (404,500) становится видна сразу.
|
А можно таким способом редактировать таблицу интерактивно ? Заносить новые данные пользователю ?
Полагаю, что лучше заменить dojo.doc. на document.
использовать фреймворк,для это задачи наврено лишнее)
newMail.js - это серверный что ли скрипт?... это уж как то непривычно, обычно серверный скрипт это php, т.е. newMail.js, так что если это серверный - нужно явно об этом написать, чтобы не вызывать дискомфорта у читателя.
А если клиентский - то тут мне самому интересно, клиентскому скрипту разве будут передаваться параметры таким образом как серверному?
Вы просто откуда-то взяли неправильные привычки. Все написано корректно. newMail.js - это js-файл, генерируемый на сервере, генерируемый чем угодно, хоть даже этим вашим php и представляющий собой js-код. Это тоже самое, что просить не применять для файлов расширения html, phtml, shtml если в их коде есть вставка <?php date('m.d.Y') ?>.
И всё же это немножко нарушает семантику, JS можно вернуть с сервера и так, вроде бы. Так ещё и сервер придётся конфигурировать, чтобы он rewrite делал на PHP скрипт. В некоторых случаях это может быть лишним
А представьте, сколько проблем начнётся при смене сервера (особенно если сам веб-сервер другой). Все конфиги править
правильные привычки!!!!
Правильный вопрос возникший в результате правильного понимания контекста!
Ибо именно именно такие непонятки и возникают при чтении статьи!
Обьяснения местами кривые до нельзя!Низкий поклон Илье за труд и большой респект но по его манере обьяснять все таки видно насколько сильно и бескомпромиссно Ёпа-скрипт
уродует мозги
Пожалуйста приведите пример multipart- передачи.
Roksa krasnik
Roksa międzyrzec podlaski
Михаил Давыдов Разработчик JavaScript retro bowl
สล็อตออนไลน์ เปิดตัวเกมสล็อตออนไลน์ใหม่ pgslot รูปแบบ 3D เกมสล็อตมาแรงที่สุดในปี 2022 เกมสล็อตให้เลือกเล่นมากกว่า 50 เกม 50 รูปแบบที่ไม่ซ้ำและไม่เหมือนใคร
ทาง เข้า xo ทางเข้าเล่นใหม่ พีจีสล็อต อัพเดทใหม่ล่าสุดปี 2022 ช่องทางการเข้าเล่นตรง สามารถล็อกอินเข้าใช้งานได้เลยจากที่นี่ โดยจะเป็นลิ้งค์ล่าสุดที่เราอัพเดทเป็นประจำ
This topic is really very useful, I'm sure it has helped many people, I sometimes have problems when writing coding, it can be very annoying, I try to relax by playing games in such situations, my favorite game is the basketball legends game, this game amuses me a lot, if you want to have a good time, playing games will relax you.
The replies on this forum caught me off guard. I'm happy to have connected with people who share the same passion as me. Let's play retro bowl unblocked together so we can discover new passions. We will see you at the game.
This forum is amazing and there is a lot of useful content here. Companies can use this content to further improve the quality of disposable nitrile gloves although they have not received any complaints about them yet. However mapquest driving directions, there is still room for improvement.
Here we give you the freedom of choice. You better know your needs. Choose the best Delhi Call Girls escorts whom you find the best from the available paid sex partners. All are gorgeous and love to cater to esteemed clients with their mind-blowing intimate services that satisfy every personal need and make you a satisfied man on the inside.
An excellent blog post. I am grateful for your blog post. I found a lot of approaches after visiting your article. temple run
Отправить комментарий
Приветствуются комментарии:Для остальных вопросов и обсуждений есть форум.