Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MVC结构PHP中的AJAX调用_Php_Ajax_Model View Controller - Fatal编程技术网

MVC结构PHP中的AJAX调用

MVC结构PHP中的AJAX调用,php,ajax,model-view-controller,Php,Ajax,Model View Controller,我有一个带有动态组件的AJAX特色页面。我想知道如何在MVC中处理ajax调用 我的第一个想法是为ajax调用创建一个新的控制器,而不呈现视图,并检查ajax请求的路由 if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') { call_user_func_array(array("ajax", $th

我有一个带有动态组件的AJAX特色页面。我想知道如何在MVC中处理ajax调用

我的第一个想法是为ajax调用创建一个新的控制器,而不呈现视图,并检查ajax请求的路由

if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
  call_user_func_array(array("ajax", $this->url_action), null);
}

我会让AJAX处理代码的位置取决于它的上下文。如果它与另一个返回完整视图的控制器处理相同类型的内容,只需在该控制器中创建一个“ajax方法”,该方法使用一个JSON头(例如,要发送到浏览器并退出的内容)进行响应。不需要专用的AJAX控制器,就像没有单独的GET控制器或POST控制器一样

编辑:(示例)


然后,如果在服务器头中检测到
xmlhttprequest
,您可以告诉您的路由器使用
ajax
-前缀方法,而不是
get
-前缀方法。

您好,我听不懂您的回答:(我正在尝试用userdata做一篇ajax文章。
class BookController
{
   public function getBookDetail($id)
   {
       // Go fetch a book from the DB.
       // Assemble your full fledged view
       // Send it to the browser
   }

   public function ajaxBookDetail($id)
   {
       // Go fetch a book from the DB.
       header('Content-Type: application/json');
       echo json_encode($someBookData);
       exit;
   }
}