В чем разница между GET и POST в контексте создания AJAX-запроса? - PullRequest
1 голос
/ 25 ноября 2010

У меня есть запрос AJAX, который отправляет GET:'getPendingList'. Этот запрос должен возвращать строку JSON, указывающую список ожидающих запросов, которые должны быть утверждены. Я немного озадачен тем, использовать ли мне здесь GET или POST.

С этого сайта :

  • GET-запросы могут быть кэшированы
  • GET-запросы могут оставаться в истории браузера
  • GET запросы могут быть добавлены в закладки
  • GET-запросы могут распространяться и делиться
  • GET-запросы могут быть взломаны (спросите Jakob!)

Так что я думаю: я не хочу, чтобы результаты этого GET кэшировались, потому что список ожидания может измениться. С другой стороны, использование POST также не имеет особого смысла.

Как я должен думать о GET и POST? Мне сказали, что GET - это то же самое, что 'read'; это ничего (или не должно) менять на стороне сервера. Это имеет смысл. Что не имеет смысла, так это часть кэширования; у меня не получится, если кто-то еще кеширует мой запрос GET, потому что я ожидаю, что данные изменятся.

Ответы [ 3 ]

1 голос
/ 25 ноября 2010

Лучшая практика от Yahoo , возможно, стоит прочесть.Они рекомендуют использовать GET в первую очередь для получения информации и POST для обновления информации.В отдельном пункте они также рекомендуют делать , чтобы вы могли кэшировать запросы AJAX там, где это имеет смысл.Проверьте это, это - хорошее чтение.

0 голосов
/ 26 ноября 2010

Итак, после некоторого IRC, похоже, что лучший способ сделать это - использовать GET (в данном конкретном случае), но для предотвращения кэширования.Есть два способа сделать это:

1) Добавить случайную строку к вашему GET-запросу.

Это кажется хакерским способом сделать это, но похоже, что это может быть единственным решениемдля IE: Запретить кеширование браузером результата вызова jQuery AJAX .

2) В вашем ответе от сервера установите заголовки в no-cache.

Непонятно, каково это окончательное поведение.Некоторые люди (см. Предыдущую ссылку) утверждают, что IE не уважает директивы no-cache.Другие люди считают, что это работает: Ajax-ссылки Internet Explorer 7 загружаются только один раз .

0 голосов
/ 25 ноября 2010

Короче говоря, GET запросов должно быть idempodent . POST запросы не являются.

Если вы изменяете состояние, используйте POST - в противном случае используйте GET .

И donне забывайте, когда речь идет о кэшировании с помощью GET / POST, то есть браузерное кэширование .

Ничто не мешает вам кэшировать данные на стороне сервера.

Кроме того,в общем - JSON-вызовы должны быть POST (, вот почему )

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...