我是一个半新手,所以请耐心等待…注意,我现在既不认识jQuery也不认识Json
在我的MVC项目中(我没有使用框架,但该项目将前端控制器与MVC相结合),我有:
1)一个控制器,它向DAO发送一些参数。DAO运行MySQL查询,并向Controller发回一组文章
2)一个视图层,我希望用户能够单击按钮从一篇文章移动到另一篇文章。我建议的方法是通过JavaScriptAjax调用来获取Controller中生成的数组中的下一篇文章。
我的问题是:Ajax函数调用的URL应该是什么?显然,它不能调用控制器(或者它可以?)。我应该添加一类专用的Ajax内容容器吗?控制器将用数组实例化这些容器?我很难看到视图如何找到正确的URL。。。控制器是否应该将参数传递给视图并让它请求查询?
XHR(也称为AJAX)调用在控制器级别与经典浏览器请求没有什么不同。区别仅仅在于你期望得到什么样的回应。
这意味着,如果您已经完全实现了视图(而不仅仅是愚蠢的模板),那么请求的类型应该只对视图重要。您可以通过添加扩展来轻松区分它们:
http://foo.in/user/list
-简单请求http://foo.in/user/list.json
-XHR请求
差异主要在路由机制中得到识别,他们在Request
实例上设置了特定的细节。当控制器看到Request
实例有一个isXHR
标志时,它会"告诉"视图:"用一些不是完整HTML页的东西对此进行响应">。
基本上,相同的控制器应该同时处理普通调用和XHR调用。事实上,你不在乎它是什么类型的请求。只在乎你是否需要在响应中产生html
、xml
或json
。
p.S.:模型层应该完全不受请求类型的影响
从上面的文章列表中,我认为您必须知道在编辑文章时调用方法的Ajax语法。
具体操作如下:1.最初在你的控制器中定义一个为你的目的服务的动作(可能是在这种情况下编辑你的文章)2.通过ajax方法指定控制器和您想要调用的操作。(在这个关键时刻,它应该是文章——控制器,编辑文章——行动)。
控件会自动导航到特定的操作方法。
问候Pavan.G
取决于您使用的框架。但总体而言:
您可以使用Controller发送一个"标志"(例如在GET变量中),表明它是AJAX查询,然后退出该函数,但为AJAX查询使用不同的控制器被认为是一个更好的途径:)无论如何,类似于此的东西:
function page() {
if($_GET["is_ajax"] == "1") {
// return the AJAX query
return;
}
// go on with showing the page
}
希望这能有所帮助!