如何使用Ajax实现Zend路由

sha*_*nth 1 php ajax zend-framework

我是zend的新手,我找不到在zend中实现Ajax的方法.

一般来说,它很容易制作ajax请求并在页面的所需部分显示响应.但是,即将到来,我不知道如何做到这一点.

假设在我的索引控制器的index.phtml文件中,我有一个按钮,当我点击它时,我必须向特定的控制器和动作发出ajax请求,并在我的页面中加载相关的控制器动作的视图.

但我无法理解的是如何指定ajax请求的URL以及路由的工作原理.

目前,我发出ajax请求静态加载视图,如下所示:

xmlhttp.open( "GET", "../应用/视图/脚本/注册/ register.phtml",TRUE);

仅供参考,我在我的应用程序中使用正则表达式路由,那么使用curl来路由请求会更好吗?

Phi*_*hil 7

首先,您不要直接请求视图.您需要请求特定的控制器操作,例如

/register/register
Run Code Online (Sandbox Code Playgroud)

Zend附带了一个名为AjaxContext的强大动作助手.此帮助程序允许您根据请求类型(XmlHttpRequest)和format参数响应不同的视图,禁用通常存在的任何布局.

要进行设置,请在控制器的init()方法中放置类似的内容

public function init()
{
    $this->_helper->ajaxContext->addActionContext('register', 'html')
                               ->initContext();
}
Run Code Online (Sandbox Code Playgroud)

然后,添加带ajax后缀的视图脚本,例如register/register.ajax.phtml.

构造您的AJAX GET请求以包含format=html参数,例如

xmlhttp.open('GET', '/register/register/format/html', true);
Run Code Online (Sandbox Code Playgroud)

要么

xmlhttp.open('GET', '/register/register?format=html', true);
Run Code Online (Sandbox Code Playgroud)

将返回的是渲染内容register.ajax.phtml,没有任何布局.