例如,假设我有一个名为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等?
答案 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' );