Как наиболее эффективно обрабатывать запросы AJAX? - PullRequest
2 голосов
/ 23 апреля 2011

Например, допустим, у меня есть контроллер под названием News.Методы новостей включают в себя создание, редактирование, удаление и т. Д. Итак, скажем, для пользователей с включенным JavaScript, мы можем использовать AJAX для решения этих задач и использовать контроллеры, если нет.Например, перейдя в / news, мы можем создавать новости, редактировать или удалять, не покидая эту страницу ... с помощью AJAX.Без javascript нам пришлось бы перейти в / news / create, / news / edit / 1, / news / delete / 1 и т. Д.

Итак, какой способ более эффективен для обработки запросов AJAX?На каждом контроллере должна быть только условная проверка, был ли запрос отправлен с AJAX, что-то вроде:

if(isset($_POST['ajax'])) {
    // serve ajax request
} else {
    // serve regular request
}

Или я должен создать дополнительные методы, такие как ajaxCreate, ajaxEdit, ajaxDelete и т. Д.?

Ответы [ 3 ]

1 голос
/ 23 апреля 2011

Разве ваши AJAX-запросы не должны быть почти такими же, как ваши обычные запросы, за исключением того, что у обычных запросов есть дополнительный слой (рендеринг страницы) сверху?

Ваша условная проверка должна просто регулировать, отвечаете ли вы чем-то вроде ответа JSON или полной страницы - фактически, какое представление вы вызываете (при условии установки в стиле MVC).

0 голосов
/ 23 апреля 2011

Никогда не используйте /news/delete/1 для удаления новостей!

используйте POST /news/delete и передавайте идентификатор новости

При этом оба запроса ajax и обычные запросы должны быть направлены на один и тот же URL,разница в том, что обычные запросы будут возвращать html-ответ, а ajax-запрос будет возвращать xml / json / etc

Page: /news/create/

// create new news item code goes here

// most newer javascript libraries set this header so you know the page
// was requested via ajax
if ( isset( $_SERVER['X-Requested-With'] && $_SERVER['X-Requested-With'] == 'XMLHttpRequest' ) {
    //output status code or new news item
    exit;
}

// not an ajax request load a view
require( 'views/news_create.php' );
0 голосов
/ 23 апреля 2011

Я предпочитаю использовать эту функцию в API.Например, у меня может быть структура папок, подобная следующей:

web
  - api
      - 1.0
         - news
            create.php
  news.php

Тогда ваша страница доступна по URL-адресу «news.php».Внутри этого файла вы используете свой собственный API.Например, AJAX будет напрямую обращаться к API по URL-адресу «api / 1.0 / news / create.php».

Это приводит к уменьшению кода API в контроллерах / представлениях.

Боб

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