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
Форумы портала PHP.SU :: Версия для печати :: Ответ обработчика ajax запроса
Форумы портала PHP.SU » » Вопросы новичков » Ответ обработчика ajax запроса

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

1. demot - 06 Декабря, 2012 - 07:29:38 - перейти к сообщению
В разных источниках читал что для любых аякс запросов считается хорошим тоном отдавать ответ обработчиком, пусть даже пустоту (когда ответ не нужен). Так вот тут возникли различные разногласия на работе среди коллег. Стоит ли это делать и в чем вообще смысл?

В общем, господа, хочется узнать ваше мнение по этому поводу.

И если не трудно, то желательно бы еще и пруфлинки на эту тему, а то, как писал выше, раньше много где встречал постов на эту тему, а сейчас уже ищу специально, но найти не могу нигде подобной информации. Однако
2. avtor.fox - 06 Декабря, 2012 - 07:36:58 - перейти к сообщению
demot всё просто.
Получив ответ от скрипта, мы сможем узнать как прошёл запрос и в дальнейшем сможем работать исходя из ответа.
Не получая ответа мы не узнаем, как был выполнен запрос. Удачен или нет и прочее.

И зачем Вам пруфы то? И "еда" для размышлений низкого уровня.


Как узнать, нужно ли обрабатывать ответ скрипта? Соберите коллегию тех-отдела и задайте вопрос на форуме Улыбка
3. tato - 06 Декабря, 2012 - 07:45:29 - перейти к сообщению
У нас на работе есть соглашение по которому Аякс всегда возврашает массив вида:

CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2.     'statusCode'=>0,
  3.     'message'=>'',
  4.     'data'=>array(), // optional
  5. )
  6.  


Статус код 0 означает, что все хорошо и при этом message будет пустым.
Если статус код отличен от нуля, то в message будет какое-то сообщение.
Каждый статус код имеет свое сообщение. Это не касается обработки HTTP заголовков
они отдельно обрабатываются.

Если необходимо вернуть данные, то они будут в data. И конечно же все в JSON (=
(Добавление)
Забыл добавить, вся команда знает какие данные и как придут. Это помогает не задовать лишних вопросов типа "А как проверить прошел запрос или нет?"
4. demot - 06 Декабря, 2012 - 07:48:47 - перейти к сообщению
avtor.fox пишет:
demot всё просто.
Получив ответ от скрипта, мы сможем узнать как прошёл запрос и в дальнейшем сможем работать исходя из ответа.
Не получая ответа мы не узнаем, как был выполнен запрос. Удачен или нет и прочее.

И зачем Вам пруфы то? И "еда" для размышлений низкого уровня.


Как узнать, нужно ли обрабатывать ответ скрипта? Соберите коллегию тех-отдела и задайте вопрос на форуме Улыбка


Не, это все конечно понятно. Но вот просто хотелось бы какой-нибудь пример, т.с. подводные камни в случае не отправки ответа.

Если брать во внимание синхронные запросы, тогда все проще. А вот в плане асинхронных...

Вот простой пример (только что придумал), счетчик кликов по какой-нибудь кнопке (средствами аякс). Алгоритм:
1. Клик по кнопке
2. Отправка аякс-запроса
3. В обработчике UPDATE....
а далее... мне в принципе не важно когда выполнится этот запрос, отсюда вопрос, просто вернуть echo ''; или же все-так инужно вернуть результат UPDATE? Или может вообще ничего не нужно возвращать?
Что правильней в данной ситуации и какие плюсы и минусы (модводные камни) могут быть при неотправке ответа вообще?
5. tato - 06 Декабря, 2012 - 07:51:35 - перейти к сообщению
К вашему примеру, Я как заказчик прошу добавить сообщение:
"Спасибо за клик теперь рейтинг 123!"

Встает вопрос получения 123 и вопрос а правда ли UPDATE прошел и рейтинг изменился.
6. demot - 06 Декабря, 2012 - 07:52:30 - перейти к сообщению
tato пишет:
У нас на работе есть соглашение по которому Аякс всегда возврашает массив вида...


Это естественно, когда есть какие-то общие правила в компании. Но хотелось бы именно знать как действительно правильно или может является признаком хорошего тона - всегда отдавать ответ, даже если он не нужен
7. tato - 06 Декабря, 2012 - 07:53:57 - перейти к сообщению
Далее например система тех же лайков, вы отправили аякс в обработчик, и вам предположим не важно, что дальше, но на сайте количество лайков обновили, а update не прошел, т.е. фактически рейтинг не изменился
8. demot - 06 Декабря, 2012 - 07:54:28 - перейти к сообщению
tato пишет:
К вашему примеру, Я как заказчик прошу добавить сообщение:
"Спасибо за клик теперь рейтинг 123!"

Встает вопрос получения 123 и вопрос а правда ли UPDATE прошел и рейтинг изменился.


Я в примере написал не просто так "мне в принципе не важно когда выполнится этот запрос", потому дополнений к "ТЗ" быть не должно. Если нужен ответ, естественно надо все проверить и отдать необходимое. Вопрос именно в том, нужно ли что-то отвечать, когда ответ не нужен?
9. tato - 06 Декабря, 2012 - 07:56:33 - перейти к сообщению
Пожалуй самым веским аргументом, может быть:

Теперь представим, что другой программист будет работать с Вашим кодом.
Он будет отправлять запросы и не получать ответа. Соответственно придется лезть в обработчик и изучать чего там происходит, вместо того что бы получить банальное "success"
(Добавление)


Цитата:
потому дополнений к "ТЗ" быть не должно


Ох... как бы Мы все этого хотели...
10. demot - 06 Декабря, 2012 - 08:00:34 - перейти к сообщению
tato пишет:
Пожалуй самым веским аргументом, может быть:
Теперь представим, что другой программист будет работать с Вашим кодом.
Он будет отправлять запросы и не получать ответа.


ответ по конкретному запросу не требуется

Ответа на свой вопрос я все равно не получаю....
11. tato - 06 Декабря, 2012 - 08:02:49 - перейти к сообщению
demot пишет:
ответ по конкретному запросу не требуется


Цитата:
Соответственно придется лезть в обработчик и изучать чего там происходит, вместо того что бы получить банальное "success"
12. avtor.fox - 06 Декабря, 2012 - 08:04:37 - перейти к сообщению
demot ответ нужно давать всегда. Уясните это.
13. tato - 06 Декабря, 2012 - 08:09:12 - перейти к сообщению
Хорошо, представте ситуацию, Вы кладете деньги на телефон, но оператор Вас не информирует о том, пришли деньги или нет. Вы можете сами посмотреть, если захотите.

В принципе логично, зачем слать лишнюю смс, но шлют, просто для удобства. Что бы сэкономить время.

Вы думаете с позиции одного разработчика, которы сам код написал и знает как и что происходит в нем, но если вы мне дадите API и скажете, что там что-то обнавляется 100%, Я вам не поверю и захочу убедится, но смогу сделать это только прочитав Ваш код. Т.е. потратив время.
14. demot - 06 Декабря, 2012 - 08:10:39 - перейти к сообщению
avtor.fox пишет:
demot ответ нужно давать всегда. Уясните это.


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

Ответ я хотел бы получить в таком виде: "Если не отправить ответ, то..... могут возникнуть такие-то проблемы: 1. ... 2. .... 3. ....".
15. avtor.fox - 06 Декабря, 2012 - 08:18:52 - перейти к сообщению
demot например тот-же самый лайк статьи/комментария/фотографии. Отправили запрос. Если ответа нет, то мы не узнаем добавился ли +1 или нет. Если ответ принимается, смотрим. Если ответ положительный, продолжаем работу (меняем например кол-во лайков или можно даже ничего не выводить). Если в ответе ошибка, прекращаем работу (или выводим ошибку).

Или например авторизация пользователя. Отправляем данные и если запрос неудачен, что Вы скажете пользователю? Ровным счётом, ничего. И что Вы сделаете без ответа, если запрос удачен?

 

Powered by ExBB FM 1.0 RC1