0
<< предыдущая заметкаследующая заметка >>
18 марта 2014
как же я ненавижу чужие фреймфорки

Практически единственный чужой код, который присутствовал в моем движке — это аякс. Ну, который /design/JsHttpRequest.js на 24кб (это больше половины всего моего main.js!) и к нему еще /include_sys/JsHttpRequest.php, который вообще непонятно, чем занимается.

Это говно мамонта долгое время работало как-то, и даже позиционировало себя как процедуру, которая может по аяксу грузить файлы (фотка, загруженная в коммент). Но выяснилось, что оно давно уже не работает с движком Chrome и всеми его клонами Safari, включая мобильные браузеры. То есть — фотку не грузит.

Заебало совсем. Причем, я прекрасно отдаю себе отчет в том, что реализовать Аякс можно тремя способами (JS-инжекция, POST-iframe и какие-то штатные процедуры браузеров, у каждого свои). Для коротких запросов можно и JS, а вообще для всего остального, включая загрузку фоток, годится POST.

В общем, когда выяснилось, что загрузка фоток не работает, а у нас конкурс, то я за утро сделал свой аякс. Пока он используется только для отправки форм. Формат его очень прост, пишем:

<form onsubmit="return ajaxform(this,'comment.php',{a:'comsend',b:1, и прочие дополнительные переменные, если лень их вставлять отдельным тэгом hidden})">

[ну дальше всякие тэги формы]
<input type='submit' value='отправить'>
</form>

И всё. И оно аяксом отправляется на сервер на урл comment.php. На сервере в ответной части вообще практически ничего делать не надо. Ну инклюдим разве что вспомогательные и авторизационные:
include «../config.php»;
include $include_sys.»_autorize.php»;
А дальше берем пришедшие переменные из $_POST (файлы из $_FILES). Ответом отправляем исполняемый код JS командой otprav(«alert('всё дошло!')"); И все проблемы с фотками остались в прошлом, и работает быстро и гарантированно на любых браузерах.

В будущем надо будет вообще от этого старого JsHttpRequest.js избавляться. Просто пока у меня готова только функция ajaxform(), которая передает не массив данных, а данные из уже готовой формы. Потому что там, где загружена фотка — там уже всегда есть какая-то форма, иначе браузер просто не может ее взять. Осталось только заменить процедурку, чтобы можно было ей передавать не форму, а массив, а форму она сама где-нибудь скрыто сделает.

UPD: Все, вообще убрал старый аякс. Вроде работает. Ох, чую будут глюки...

<< предыдущая заметка следующая заметка >>
пожаловаться на эту публикацию администрации портала
архив понравившихся мне ссылок
Оставить комментарий


Include not found: `/home/www/lleo.me/blog/template/_reklamnaya_lirica.htm`