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
Как вы заметили, я отправляю AJAX запрос для обработки данных на сервере методом POST. Но как получается, что в то же время срабатывает GET и я получаю результат обработки данных сервером? Я же не писал в req.send что хочу получить данные и не указывал метод GET. Как получается, что данные все равно послушно выводятся в виде результата? Тоесть выводится не только ответ сервера по обработке того запроса, что я посылаю методом POST, но ещё и другой текст(Hello world), который выводится в серверном файле? Вот это не понимаю. Просьба помочь мне разобраться
что сервер отправил, то ты и получил в ответе. Это основной принцип работы сети запрос-ответ. И неважно, аяксом ты делаешь запрос или как-то иначе.
----- Чем больше узнаю, тем больше я не знаю.
EuGen
Отправлено: 29 Июля, 2013 - 09:09:47
Профессионал
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
teddy
Возможно, недопонимание состоит из-за использования метода POST. Строго говоря, технически, POST - суть тот же GET. А, согласно HTTP, сервер отвечает на любой запрос клиента (вдобавок Вы выводите ответ в документ, как указали в комментарии выше)
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
teddy
Отправлено: 29 Июля, 2013 - 12:15:26
Участник
Покинул форум
Сообщений всего: 1462
Дата рег-ции: Апр. 2013
Помог: 91 раз(а)
DelphinPRO пишет:
Сервер тебе отвечает? отвечает:
Отвечать так отвечает, но вот не было понятно, почему именно...
По поводу основного принципа: если допустим мы что то добавляем в БД(другая тема) и выводим, то нам нужен селект и инсерт. А не один инсерт который отдаст нам и селект автоматически, ведь так? Поэтому было не очень понятно )
EuGen
EuGen пишет:
Возможно, недопонимание состоит из-за использования метода POST.
Вы верно заметили, я даже намекнул на это в начале темы. Я просто думал что если не написать именно GET, сервер ничего не ответит а только обработает то, что ему прислали, например уложит данные в базу. Спасибо
DelphinPRO
Отправлено: 29 Июля, 2013 - 12:29:39
Активный участник
Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012
Помог: 353 раз(а)
понятно, что вам было не понятно
но
teddy пишет:
Я просто думал что если не написать именно GET, сервер ничего не ответит а только обработает то, что ему прислали, например уложит данные в базу
неужели вы ни разу не пробовали просто отправить форму методом POST? Вам же возвращается результат, если вы делаете echo. т.е.
Покинул форум
Сообщений всего: 1462
Дата рег-ции: Апр. 2013
Помог: 91 раз(а)
DelphinPRO
Точно ) я просто аякс начал изучать на днях, он показался мне каким то особенным ) Да и когда изучал его, в материалах явно было указано POST что бы отправить данные, а GET что бы забрать. Из за этого я думал что придется писать POST запрос отдельно, а GET отдельно...
А тут вдруг я пишу POST, а данные почему то летят обратно.. Вот в чем была проблема ) Я просто не до конца понимал почему именно он работает )) Ну теперь уже вопросов нет ) Благодарю за внимание! в ближайшее время изменю вашу карму ))
Zuldek
Отправлено: 29 Июля, 2013 - 12:49:30
Постоянный участник
Покинул форум
Сообщений всего: 2122
Дата рег-ции: Июнь 2010
Помог: 50 раз(а)
Цитата:
что в то же время срабатывает GET и я получаю результат обработки данных сервером?
Где он срабатывает?
Формат ответа сервера на POST и GET аналогичен.
Вывод
Цитата:
Hello, world!
совершенно не означает факт использования $_GET-запроса. Читать описание протокола HTTP.
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
DeepVarvar
Чисто теоретически - это почти всегда так. На практике же, увы, существуют ограничения для передачи данных методом GET, связанных, разумеется, с устройством самих браузеров, а так же максимальной длиной QUERY_STRING для веб-сервера. Поэтому, в случае, если параметров много и значения их достаточно длинные (всевозможные фильтры, как вариант) - то могут возникнуть сложности, и в таком случае используют все-таки POST + перенаправление. Это, правда, скорее исключение, так как на практике такое встречается редко.
Исходя чисто из дизайна запроса - POST должен что-либо изменять, GET - получать, в силу стандарта HTTP на деле POST изменяет + возвращает (не имеется ввиду возвращает изменённое, я про ответ HTTP в целом). Так что верно и обратное - не следует использовать GET для изменения данных (например, "action=delete&id=100") - опять же, "не следует" - в теории, исходя из здравого смысла (но это не значит, что технически это вызовет какие-либо трудности)
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.