Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/462.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
Php Ajax在MVC项目中应该调用什么URL?_Php_Javascript_Ajax_Model View Controller_Front Controller - Fatal编程技术网

Php Ajax在MVC项目中应该调用什么URL?

Php Ajax在MVC项目中应该调用什么URL?,php,javascript,ajax,model-view-controller,front-controller,Php,Javascript,Ajax,Model View Controller,Front Controller,我是个半新手,所以请容忍我注意,目前我不知道jQuery或Json 在我的MVC项目中(我没有使用框架,但该项目结合了前端控制器和MVC),我有: 1) 控制器,它向DAO发送一些参数。DAO运行一个MySQL查询,并将一系列文章发送回控制器。 2) 一个视图层,我希望用户能够在其中单击按钮以从一篇文章移动到另一篇文章。我建议的方法是通过一个javascript Ajax调用来获取控制器中生成的数组中的下一篇文章 我的问题是:Ajax函数应该调用什么URL?显然,它不能调用控制器(或者它可以?)

我是个半新手,所以请容忍我注意,目前我不知道jQuery或Json

在我的MVC项目中(我没有使用框架,但该项目结合了前端控制器和MVC),我有:
1) 控制器,它向DAO发送一些参数。DAO运行一个MySQL查询,并将一系列文章发送回控制器。
2) 一个视图层,我希望用户能够在其中单击按钮以从一篇文章移动到另一篇文章。我建议的方法是通过一个javascript Ajax调用来获取控制器中生成的数组中的下一篇文章


我的问题是:Ajax函数应该调用什么URL?显然,它不能调用控制器(或者它可以?)。我是否应该添加一类专用的Ajax内容容器,由控制器用数组实例化?我很难看到视图如何找到正确的URL。。。控制器是否应该将参数传递给视图并让它请求查询?

取决于您使用的框架。但一般来说:

您可以使用控制器发送一个“标志”(例如GET变量),表明它是一个AJAX查询,然后退出该函数,但使用不同的控制器进行AJAX查询被认为是一个更好的选择:)总之,类似于以下内容:

function page() {
   if($_GET["is_ajax"] == "1") {
      // return the AJAX query
      return;
   }
// go on with showing the page
}
希望这有帮助

XHR(也称为AJAX)调用在控制器级别与传统浏览器请求没有什么不同。区别只在于你期望得到什么样的回应

这意味着,如果您已经完全实现了视图(不仅仅是哑模板),那么请求的类型应该只对视图重要。您可以通过添加扩展来轻松区分它们:

  • http://foo.in/user/list
    -简单请求
  • http://foo.in/user/list.json
    -XHR请求
这种差异主要在路由机制中得到识别,路由机制设置了
请求
实例的具体细节。当控制器看到
Request
实例有一个
isXHR
标志时,它会告诉视图:“用一些东西响应这个请求,这不是完整的HTML页面”

基本上,相同的控制器应该同时处理普通和XHR调用。事实上,你并不关心它是什么类型的请求。仅限您是否需要在响应中生成
html
xml
json

p.S.:模型层应完全不受请求类型的影响


从上面的文章列表中,我假设您必须知道在编辑文章时调用方法的Ajax语法

具体做法如下: 1.最初在控制器内定义一个操作,该操作服务于您的目的(可能在此上下文中编辑您的文章) 2.通过ajax方法指定要调用的控制器和操作。( 在这一点上,应该是Articles——Controller、EditArticle——Action)

控件自动导航到特定的操作方法

问候
这是唯一的办法吗?还有另一种更常见的方法可以通过JS框架发送的
$\u服务器['HTTP\u X\u REQUESTED\u WITH']
HTTP\u X\u REQUESTED\u WITH
来区分它们。但是应该可以使用本机
XMLHttpRequest
对象发送一些签名头。但这并没有改变这一点。控制器的行为不应受到通过XHR发出请求的事实的影响。@tereško-我感谢您在回答我的问题时所做的努力,但我必须承认我完全迷失了方向。恐怕你认为我的知识水平比实际情况要高。:)JSON与jQuery没有任何关系。公平点——正如我所说,我对这两者都一无所知。理解JSON需要5分钟。。假设你懂JavaScript。在PHP端,您在JS端使用了
json\u encode()
json.parse()
,这很公平,但一次只能做一件事。。然后请求XML。你知道XML!?或者,该死,构造一个扩展,然后您可以稍后重构它,使其与JSON正常工作。