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 запроса
Покинул форум
Сообщений всего: 143
Дата рег-ции: Окт. 2010
Помог: 3 раз(а)
В разных источниках читал что для любых аякс запросов считается хорошим тоном отдавать ответ обработчиком, пусть даже пустоту (когда ответ не нужен). Так вот тут возникли различные разногласия на работе среди коллег. Стоит ли это делать и в чем вообще смысл?
В общем, господа, хочется узнать ваше мнение по этому поводу.
И если не трудно, то желательно бы еще и пруфлинки на эту тему, а то, как писал выше, раньше много где встречал постов на эту тему, а сейчас уже ищу специально, но найти не могу нигде подобной информации.
avtor.fox
Отправлено: 06 Декабря, 2012 - 07:36:58
Постоянный участник
Покинул форум
Сообщений всего: 2083
Дата рег-ции: Март 2012 Откуда: Воронеж
Помог: 50 раз(а)
demot всё просто.
Получив ответ от скрипта, мы сможем узнать как прошёл запрос и в дальнейшем сможем работать исходя из ответа.
Не получая ответа мы не узнаем, как был выполнен запрос. Удачен или нет и прочее.
И зачем Вам пруфы то? И "еда" для размышлений низкого уровня.
Как узнать, нужно ли обрабатывать ответ скрипта? Соберите коллегию тех-отдела и задайте вопрос на форуме
tato
Отправлено: 06 Декабря, 2012 - 07:45:29
Посетитель
Покинул форум
Сообщений всего: 468
Дата рег-ции: Сент. 2011 Откуда: Владивосток
Помог: 8 раз(а)
У нас на работе есть соглашение по которому Аякс всегда возврашает массив вида:
Статус код 0 означает, что все хорошо и при этом message будет пустым.
Если статус код отличен от нуля, то в message будет какое-то сообщение.
Каждый статус код имеет свое сообщение. Это не касается обработки HTTP заголовков
они отдельно обрабатываются.
Если необходимо вернуть данные, то они будут в data. И конечно же все в JSON (= (Добавление)
Забыл добавить, вся команда знает какие данные и как придут. Это помогает не задовать лишних вопросов типа "А как проверить прошел запрос или нет?"
----- просто ?: сложно
demot
Отправлено: 06 Декабря, 2012 - 07:48:47
Частый гость
Покинул форум
Сообщений всего: 143
Дата рег-ции: Окт. 2010
Помог: 3 раз(а)
avtor.fox пишет:
demot всё просто.
Получив ответ от скрипта, мы сможем узнать как прошёл запрос и в дальнейшем сможем работать исходя из ответа.
Не получая ответа мы не узнаем, как был выполнен запрос. Удачен или нет и прочее.
И зачем Вам пруфы то? И "еда" для размышлений низкого уровня.
Как узнать, нужно ли обрабатывать ответ скрипта? Соберите коллегию тех-отдела и задайте вопрос на форуме
Не, это все конечно понятно. Но вот просто хотелось бы какой-нибудь пример, т.с. подводные камни в случае не отправки ответа.
Если брать во внимание синхронные запросы, тогда все проще. А вот в плане асинхронных...
Вот простой пример (только что придумал), счетчик кликов по какой-нибудь кнопке (средствами аякс). Алгоритм:
1. Клик по кнопке
2. Отправка аякс-запроса
3. В обработчике UPDATE....
а далее... мне в принципе не важно когда выполнится этот запрос, отсюда вопрос, просто вернуть echo ''; или же все-так инужно вернуть результат UPDATE? Или может вообще ничего не нужно возвращать?
Что правильней в данной ситуации и какие плюсы и минусы (модводные камни) могут быть при неотправке ответа вообще?
tato
Отправлено: 06 Декабря, 2012 - 07:51:35
Посетитель
Покинул форум
Сообщений всего: 468
Дата рег-ции: Сент. 2011 Откуда: Владивосток
Помог: 8 раз(а)
К вашему примеру, Я как заказчик прошу добавить сообщение:
"Спасибо за клик теперь рейтинг 123!"
Встает вопрос получения 123 и вопрос а правда ли UPDATE прошел и рейтинг изменился.
Покинул форум
Сообщений всего: 143
Дата рег-ции: Окт. 2010
Помог: 3 раз(а)
tato пишет:
У нас на работе есть соглашение по которому Аякс всегда возврашает массив вида...
Это естественно, когда есть какие-то общие правила в компании. Но хотелось бы именно знать как действительно правильно или может является признаком хорошего тона - всегда отдавать ответ, даже если он не нужен
tato
Отправлено: 06 Декабря, 2012 - 07:53:57
Посетитель
Покинул форум
Сообщений всего: 468
Дата рег-ции: Сент. 2011 Откуда: Владивосток
Помог: 8 раз(а)
Далее например система тех же лайков, вы отправили аякс в обработчик, и вам предположим не важно, что дальше, но на сайте количество лайков обновили, а update не прошел, т.е. фактически рейтинг не изменился
----- просто ?: сложно
demot
Отправлено: 06 Декабря, 2012 - 07:54:28
Частый гость
Покинул форум
Сообщений всего: 143
Дата рег-ции: Окт. 2010
Помог: 3 раз(а)
tato пишет:
К вашему примеру, Я как заказчик прошу добавить сообщение:
"Спасибо за клик теперь рейтинг 123!"
Встает вопрос получения 123 и вопрос а правда ли UPDATE прошел и рейтинг изменился.
Я в примере написал не просто так "мне в принципе не важно когда выполнится этот запрос", потому дополнений к "ТЗ" быть не должно. Если нужен ответ, естественно надо все проверить и отдать необходимое. Вопрос именно в том, нужно ли что-то отвечать, когда ответ не нужен?
tato
Отправлено: 06 Декабря, 2012 - 07:56:33
Посетитель
Покинул форум
Сообщений всего: 468
Дата рег-ции: Сент. 2011 Откуда: Владивосток
Помог: 8 раз(а)
Пожалуй самым веским аргументом, может быть:
Теперь представим, что другой программист будет работать с Вашим кодом.
Он будет отправлять запросы и не получать ответа. Соответственно придется лезть в обработчик и изучать чего там происходит, вместо того что бы получить банальное "success" (Добавление)
Цитата:
потому дополнений к "ТЗ" быть не должно
Ох... как бы Мы все этого хотели...
----- просто ?: сложно
demot
Отправлено: 06 Декабря, 2012 - 08:00:34
Частый гость
Покинул форум
Сообщений всего: 143
Дата рег-ции: Окт. 2010
Помог: 3 раз(а)
tato пишет:
Пожалуй самым веским аргументом, может быть:
Теперь представим, что другой программист будет работать с Вашим кодом.
Он будет отправлять запросы и не получать ответа.
ответ по конкретному запросу не требуется
Ответа на свой вопрос я все равно не получаю....
tato
Отправлено: 06 Декабря, 2012 - 08:02:49
Посетитель
Покинул форум
Сообщений всего: 468
Дата рег-ции: Сент. 2011 Откуда: Владивосток
Помог: 8 раз(а)
demot пишет:
ответ по конкретному запросу не требуется
Цитата:
Соответственно придется лезть в обработчик и изучать чего там происходит, вместо того что бы получить банальное "success"
----- просто ?: сложно
avtor.fox
Отправлено: 06 Декабря, 2012 - 08:04:37
Постоянный участник
Покинул форум
Сообщений всего: 2083
Дата рег-ции: Март 2012 Откуда: Воронеж
Помог: 50 раз(а)
demot ответ нужно давать всегда. Уясните это.
tato
Отправлено: 06 Декабря, 2012 - 08:09:12
Посетитель
Покинул форум
Сообщений всего: 468
Дата рег-ции: Сент. 2011 Откуда: Владивосток
Помог: 8 раз(а)
Хорошо, представте ситуацию, Вы кладете деньги на телефон, но оператор Вас не информирует о том, пришли деньги или нет. Вы можете сами посмотреть, если захотите.
В принципе логично, зачем слать лишнюю смс, но шлют, просто для удобства. Что бы сэкономить время.
Вы думаете с позиции одного разработчика, которы сам код написал и знает как и что происходит в нем, но если вы мне дадите API и скажете, что там что-то обнавляется 100%, Я вам не поверю и захочу убедится, но смогу сделать это только прочитав Ваш код. Т.е. потратив время.
----- просто ?: сложно
demot
Отправлено: 06 Декабря, 2012 - 08:10:39
Частый гость
Покинул форум
Сообщений всего: 143
Дата рег-ции: Окт. 2010
Помог: 3 раз(а)
avtor.fox пишет:
demot ответ нужно давать всегда. Уясните это.
Да я это понимаю. И всегда пишу код с учетом этого. Но аргументов, когда коллеги говорят что это лишнее, привести не могу, кроме как "частенько встречал это в статьях". Потому сюда и обратился.
Ответ я хотел бы получить в таком виде: "Если не отправить ответ, то..... могут возникнуть такие-то проблемы: 1. ... 2. .... 3. ....".
avtor.fox
Отправлено: 06 Декабря, 2012 - 08:18:52
Постоянный участник
Покинул форум
Сообщений всего: 2083
Дата рег-ции: Март 2012 Откуда: Воронеж
Помог: 50 раз(а)
demot например тот-же самый лайк статьи/комментария/фотографии. Отправили запрос. Если ответа нет, то мы не узнаем добавился ли +1 или нет. Если ответ принимается, смотрим. Если ответ положительный, продолжаем работу (меняем например кол-во лайков или можно даже ничего не выводить). Если в ответе ошибка, прекращаем работу (или выводим ошибку).
Или например авторизация пользователя. Отправляем данные и если запрос неудачен, что Вы скажете пользователю? Ровным счётом, ничего. И что Вы сделаете без ответа, если запрос удачен?
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.