javascript – 在Cake PHP 3.0中调用Jquery ajax

嗨,
我正试图从控制器B向视图A发出ajax请求,如下所示:

在视图中A:

var tab = new Array();
    function updateResult(){
            $.ajax({
                type:"POST",
                url:"<?PHP echo Router::url(array('controller'=>'B','action'=>'viewresult'));?>",
                dataType: 'text',
                async:false,
                success: function(tab){
                    alert('success');
                },
                error: function (tab) {
                    alert('error');
                }
            });
    }

在控制器B中:

public function viewresult()
{
echo 'SUCCESS';
}

问题是在ajax的’响应’中,我’成功’但也是整个视图A,我不明白为什么……
我只想’成功’……

提前致谢 !

解决方法:

实现它的最简单方法是在函数末尾添加die(),以防止加载整个布局:

public function viewresult()
{
    echo 'SUCCESS';
    die;
}

要么

public function viewresult()
{
    die('SUCCESS');
}

但更传统的方式是使用JSONView.您的操作应如下所示:

public function viewresult()
{
    $this->set('text', 'SUCCESS');
    $this->set('_serialize', ['text']);
}

您还必须在控制器的initialize()方法中加载RequestHandler组件:

public function initialize()
{
    parent::initialize();

    $this->loadComponent('RequestHandler');
}

您需要为稍后在routes.PHP中连接的所有路由设置允许的扩展:

Router::extensions('json', 'xml');

现在,您可以访问在其URL的末尾添加扩展名.json的操作,因此您需要修改ajax调用URL:

url:"<?PHP echo Router::url(array('controller'=>'Main','action'=>'viewresult', '_ext' => 'json'));?>"

这就是全部,但请记住,此解决方案会强制您在响应中处理JSON数组.在此示例中,输出将如下所示:

{"text": "SUCCESS"}

相关文章

IE6是一个非常老旧的网页浏览器,虽然现在很少人再使用它,但...
PHP中的count()函数是用来计算数组或容器中元素的个数。这个...
使用 AJAX(Asynchronous JavaScript and XML)技术可以在不...
Ajax(Asynchronous JavaScript and XML)是一种用于改进网页...
本文将介绍如何通过AJAX下载Excel文件流。通过AJAX,我们可以...
Ajax是一种用于客户端和服务器之间的异步通信技术。通过Ajax...