Php Ajax在MVC项目中应该调用什么URL?
我是个半新手,所以请容忍我注意,目前我不知道jQuery或Json 在我的MVC项目中(我没有使用框架,但该项目结合了前端控制器和MVC),我有: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?显然,它不能调用控制器(或者它可以?)
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
-XHR请求http://foo.in/user/list.json
请求
实例的具体细节。当控制器看到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正常工作。