Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #31 (permalink)  
Старый 10.04.2015, 18:13
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

Сообщение от hoax
Если указать то что вы написали, в файле ajax.php, при клике он будет вызывать сам себя.
Харе тупить. В браузере никаких php не существует.

Кто сделал хтмл - аякс.пхп или даздраперма.пхп - николебет. Более того, хмтл вообще нафиг не нужен чтобы посылать какие-то запросы. И клики не нужны.

скрипт из браузера посылает http ЗАГОЛОВОК на сервер, сервер открывает указанный урл, с этого урла идет ответ по http - браузер его получает и повинуясь скрипту в событии использует полученные данные.

Все просто до невозможности.
Ответить с цитированием
  #32 (permalink)  
Старый 10.04.2015, 18:14
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

Сообщение от hoax
Php возвращает ошибку отсутствие данной ф-и
Если у вас гавнокоды - так все и будет продолжаться.

Это вообще самый легкий вариант с конкретным указанием скрипта-процессинга. Там думать вообще не надо - там написал имя, тут написал логику и сразу echo.

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

Через индекс запускают для реюза, иначе ajax.php превращается в еще одну точку входа. А назера еще одна, если она уже есть.

ЗЫ Я главного не понял - как вы проверяете какие-то переменные в скрипте, который вообще не запускается по запросу?

Последний раз редактировалось kostyanet, 10.04.2015 в 18:25.
Ответить с цитированием
  #33 (permalink)  
Старый 10.04.2015, 18:59
Профессор
Отправить личное сообщение для hoax Посмотреть профиль Найти все сообщения от hoax
 
Регистрация: 20.09.2012
Сообщений: 151

Сообщение от kostyanet Посмотреть сообщение
Если из браузера идет xhr.send('GET', 'script.php', true) значит именно в script.php все должно быть и дальнейшая реализация абсолютно никого не колебет.


Если у меня есть файл записи в бд, то в xhr.open() я буду указывать именно этот файл, это и есть реализация. Но вызывать класс бд я буду из другого файла. А вы мне че предлагаете, запихнуть в script отдельную модель и вид и возвращать ответ сервера с этого файла, потому что с другими он не работает?

Мне человек говорит что у него все получается, с теми примерами которые указывал он. Если у меня говнокод, то где он? Я кинул чистые примеры, там три строчки кода всего, могу даже скинуть директорию с целыми двумя файлами
Ответить с цитированием
  #34 (permalink)  
Старый 10.04.2015, 19:13
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

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

А если сделать так -

// script.php

function f() {
echo 'text';
}



// ajax.php

<?php

include 'script.php'; // подключили
f(); // и вызвали, PHP вернул echo

?>
...
xhr.send('GET', 'script.php', true); // а вот js нет


Вопрос - чего вы ловите в ajax.php, если к нему обращения вообще нет? Ничего не перепутано, так и есть исполнение?
Ответить с цитированием
  #35 (permalink)  
Старый 11.04.2015, 06:32
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

Да он просто не знает что надо послать заголовок предваряющий заголовок запроса, чтобы контроллер или модель поняли что это аякс.

Во всех фреймворках так сделано и в том числе жикверя посылает такой.
Ответить с цитированием
  #36 (permalink)  
Старый 11.04.2015, 06:39
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

Вот так

link.open("POST",window.location.href);
link.setRequestHeader("X-Requested-With","XMLHttpRequest");
link.send(form_data);


protected function get_ajax() {
		return $this->_d['ajax']=isset($_SERVER['HTTP_X_REQUESTED_WITH'])
			&& strcasecmp($_SERVER['HTTP_X_REQUESTED_WITH'],'xmlhttprequest')==0;
	}


через геттер класса контроллера проверка выглядит так

if($this->ajax) {
   
}


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

Вот для get общая самопальная функция

var send_get=function(url,func) {
	var link=new XMLHttpRequest();
	link.onreadystatechange=function(){
		if(this.readyState==4) {
			document.body.style.cursor='auto';
			try{func(this);}
			catch(e){console.log(this.responseText);
				alert("Link Error! "+e+": "+this.statusText);}
		}
	};
	link.open("GET",url);
	link.setRequestHeader("X-Requested-With","XMLHttpRequest");
	link.send();
	document.body.style.cursor='wait';
};
Ответить с цитированием
  #37 (permalink)  
Старый 11.04.2015, 06:57
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

Сообщение от hoax
И тот самый обработчик .php, получает значение и одновременно возвращает лишь в том случае, если класс обработчика вызван в этом же файле (файле обработчика). т.е.
Не лишь в том случае, а единственно в случае, иначе файл попросту не будет запущен и ничего не сделает. Это настолько фундаментально, что берут сомнения в нормальности логики вашего приложения.

В одноточечной системе все запросы идут через индекс. Следовательно в любом месте можно сделать ветку на обслуживание запросов по аяксу, но, тогда одноточка превращается в граф. В этот же граф превращается система когда вы посылаете запросы на любой произвольный файл. Думая что так будет быстрее и эффективнее. Типа не надо поднимать все эти конфиги, строить деревья и все такое чтобы отдать какую-то там единичку в браузер.

Все это полная фигня. На фоне ресурсов которые подняты на сервере чтобы отдать эту единичку, расходы на ваши скрипты мизерны. Ну, если они, скрипты, хоть немного написаны по-человечески. Поэтому все идет нормально как предусмотрено, а флаг "это аякс" позволяет срезать углы и прокалывать иерархию чтобы побыстрее ответить, только и всего.

Самый жирный кусок пхп - это рендер. Условно говоря за экономию килограмма рендера вы можете нагрузить ракету-носитель десятью кило дополнительной логики. Поэтому аякс всегда быстрее, даже если идет по тому же пути, просто потому что там либо вообще не будет рендера, либо он окажется минимальным.

Насчет сервера. Скажем чтобы отдать файл my-lovely-chick.jpg какой-то там nginx или типа того потратит 1 у.е. А чтобы отдать 1 или 0 в браузер на вопрос "а такое имя в базе есть?" nginx летит в унитаз, поднимается вся эта пхп-шная тряхомудия, со всеми либами включая майскуль, это сколько там - мегов 30-40 надо выделить, потом идет запрос select id from users where name ="Вася" и отдача байта через json, что можно оценить уже в 1000 уе. Ну и где вы тут сэкономите если начнете размножать файлы по одному на запрос?

Последний раз редактировалось kostyanet, 11.04.2015 в 07:05.
Ответить с цитированием
  #38 (permalink)  
Старый 11.04.2015, 07:14
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

Сообщение от hoax
Если у меня есть файл записи в бд, то в xhr.open() я буду указывать именно этот файл, это и есть реализация.
Бред какой-то, "файл записи в бд". Вы очевидно доктринер и варитесь в своих соках не пытаясь узнать как вообще делается, как люди делают. Что там подсмотрели - просто не поняли. Как вы пишите, потому что, так не может работать, в приципе.

Какой еще нахрен файл записи в бд? С любого места можно записать что угодно куда хочешь. Чтобы не повторять запросы вы их просто сохраняете в модели как в конфиге, ага, а зачем тогда оттуда брать - пусть сама и записывает. А кто мешает подключить ту же модель в любом произвольном файле? Никто. А зачем ее где-то еще подключать, если она и сама все сделает когда до нее дойдет очередь увидев что это аякс. А зачем ей ждать своей очереди если уже известно что это аякс и можно посмотреть где можно срезать...

Все эти варианты и решаются по месту в рамках вашей рамки.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Возврат значения из функции eniacty Общие вопросы Javascript 4 17.11.2014 16:50
Возврат принятого значения внешней функции из jquery ajax pro_xaoc jQuery 2 20.06.2014 12:20
Ajax запрос. Возврат массива. Rinas jQuery 5 09.04.2011 18:58
AJAX обращение к файлу php и получение значения zeraid jQuery 8 28.03.2011 14:46
возврат увеличенного значения AJAX mikeles AJAX и COMET 0 31.10.2009 08:48