处理AJAX请求的最有效方法是什么?

时间:2011-04-22 21:39:47

标签: php javascript ajax

例如,假设我有一个名为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 个答案:

答案 0 :(得分:1)

您的AJAX请求不应该与常规请求几乎相同,除非常规请求在顶部有一个额外的层(呈现页面)吗?

您的条件检查应该简单地规定您是否使用JSON响应或整页进行响应 - 实际上是您调用的视图(假设采用MVC风格的设置)。

答案 1 :(得分:0)

我更喜欢将此功能添加到API中。例如,我可以使用如下文件夹结构:

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

然后可以通过'news.php'网址访问您的网页。在此文件中,您将使用自己的API。例如,AJAX还可以直接访问“api / 1.0 / news / create.php”URL中的API。

这会导致控制器/视图中的API代码减少。

鲍勃

答案 2 :(得分:0)

永远不要使用/news/delete/1删除新闻!

使用POST /news/delete并传递新闻ID

话虽如此,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' );