Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Объясните пожалуйста ньюанс в использованни AJAX

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
teddy
Отправлено: 29 Июля, 2013 - 01:46:06
Post Id


Участник


Покинул форум
Сообщений всего: 1462
Дата рег-ции: Апр. 2013  


Помог: 91 раз(а)




Здравствуйте. Не понимаю как работает скрипт, который описан ниже. После скрипта опишу то, что именно мне не понятно.

Клиент:
Спойлер (Отобразить)


Сервер:
Спойлер (Отобразить)

Как вы заметили, я отправляю AJAX запрос для обработки данных на сервере методом POST. Но как получается, что в то же время срабатывает GET и я получаю результат обработки данных сервером? Я же не писал в req.send что хочу получить данные и не указывал метод GET. Как получается, что данные все равно послушно выводятся в виде результата? Тоесть выводится не только ответ сервера по обработке того запроса, что я посылаю методом POST, но ещё и другой текст(Hello world), который выводится в серверном файле? Вот это не понимаю. Просьба помочь мне разобраться

(Отредактировано автором: 29 Июля, 2013 - 02:25:39)

 
 Top
DelphinPRO
Отправлено: 29 Июля, 2013 - 09:04:10
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




что тут непонятного?
ответ сервера ты выводишь на страницу? выводишь:
CODE (javascript):
скопировать код в буфер обмена
  1. document.getElementById("result").innerHTML = req.responseText;

Сервер тебе отвечает? отвечает:
PHP:
скопировать код в буфер обмена
  1. echo $a + $b."<br />";
  2. echo "Hello, world!";


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


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
EuGen Администратор
Отправлено: 29 Июля, 2013 - 09:09:47
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




teddy
Возможно, недопонимание состоит из-за использования метода POST. Строго говоря, технически, POST - суть тот же GET. А, согласно HTTP, сервер отвечает на любой запрос клиента (вдобавок Вы выводите ответ в документ, как указали в комментарии выше)


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
teddy
Отправлено: 29 Июля, 2013 - 12:15:26
Post Id


Участник


Покинул форум
Сообщений всего: 1462
Дата рег-ции: Апр. 2013  


Помог: 91 раз(а)




DelphinPRO пишет:
Сервер тебе отвечает? отвечает:

Отвечать так отвечает, но вот не было понятно, почему именно...

По поводу основного принципа: если допустим мы что то добавляем в БД(другая тема) и выводим, то нам нужен селект и инсерт. А не один инсерт который отдаст нам и селект автоматически, ведь так? Поэтому было не очень понятно )

EuGen
EuGen пишет:
Возможно, недопонимание состоит из-за использования метода POST.

Вы верно заметили, я даже намекнул на это в начале темы. Я просто думал что если не написать именно GET, сервер ничего не ответит а только обработает то, что ему прислали, например уложит данные в базу. Спасибо
 
 Top
DelphinPRO
Отправлено: 29 Июля, 2013 - 12:29:39
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




понятно, что вам было не понятно Улыбка
но
teddy пишет:
Я просто думал что если не написать именно GET, сервер ничего не ответит а только обработает то, что ему прислали, например уложит данные в базу
неужели вы ни разу не пробовали просто отправить форму методом POST? Вам же возвращается результат, если вы делаете echo. т.е.

CODE (htmlphp):
скопировать код в буфер обмена
  1. <? if (isset($_POST['submit'])) echo 'Form submitted.'; ?>
  2. <form action="" method="post">
  3.   <input type="submit" name="submit" value="submit">
  4. </form>


ну да ладно, если все понятно, я удаляюсь Улыбка


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
teddy
Отправлено: 29 Июля, 2013 - 12:35:27
Post Id


Участник


Покинул форум
Сообщений всего: 1462
Дата рег-ции: Апр. 2013  


Помог: 91 раз(а)




DelphinPRO
Точно ) я просто аякс начал изучать на днях, он показался мне каким то особенным ) Да и когда изучал его, в материалах явно было указано POST что бы отправить данные, а GET что бы забрать. Из за этого я думал что придется писать POST запрос отдельно, а GET отдельно...

А тут вдруг я пишу POST, а данные почему то летят обратно.. Вот в чем была проблема ) Я просто не до конца понимал почему именно он работает )) Ну теперь уже вопросов нет ) Благодарю за внимание! в ближайшее время изменю вашу карму Язычок ))
 
 Top
Zuldek
Отправлено: 29 Июля, 2013 - 12:49:30
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2122
Дата рег-ции: Июнь 2010  


Помог: 50 раз(а)




Цитата:
что в то же время срабатывает GET и я получаю результат обработки данных сервером?

Где он срабатывает?
Формат ответа сервера на POST и GET аналогичен.
Вывод
Цитата:
Hello, world!
совершенно не означает факт использования $_GET-запроса. Читать описание протокола HTTP.

(Отредактировано автором: 29 Июля, 2013 - 12:51:16)

 
 Top
DeepVarvar Супермодератор
Отправлено: 29 Июля, 2013 - 15:43:28
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




 
 Top
EuGen Администратор
Отправлено: 29 Июля, 2013 - 16:00:50
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




DeepVarvar
Чисто теоретически - это почти всегда так. На практике же, увы, существуют ограничения для передачи данных методом GET, связанных, разумеется, с устройством самих браузеров, а так же максимальной длиной QUERY_STRING для веб-сервера. Поэтому, в случае, если параметров много и значения их достаточно длинные (всевозможные фильтры, как вариант) - то могут возникнуть сложности, и в таком случае используют все-таки POST + перенаправление. Это, правда, скорее исключение, так как на практике такое встречается редко.
Исходя чисто из дизайна запроса - POST должен что-либо изменять, GET - получать, в силу стандарта HTTP на деле POST изменяет + возвращает (не имеется ввиду возвращает изменённое, я про ответ HTTP в целом). Так что верно и обратное - не следует использовать GET для изменения данных (например, "action=delete&id=100") - опять же, "не следует" - в теории, исходя из здравого смысла (но это не значит, что технически это вызовет какие-либо трудности)


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


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



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB