微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php – Cake 1.3中的Ajax的一个好/简单的例子,没有使用弃用的帮助器?

我在 PHP中使用过很多AJAX,但是现在我正在尝试学习CakePHP,而且还没有任何关于如何在CakePHP 1.3中使用AJAX的好/简单示例.我能找到的唯一例子是分页(不是我需要的),或者在强制你包含scriptaculous或prototype时使用弃用的助手.

有没有关于如何使用AJAX w / CakePHP 1.3的好/简单示例?还是有人可以在这里解释一下?

我想要做的就是让用户单击一个链接,该链接检索PHP文件内容,并将其插入到div中. PHP文件内容将根据ajax调用发送的一些POST或GET变量进行更改.看起来很简单:(

解决方法

这是我在CakePHP 1.3.x中使用的模式.这个过程通常是:

>创建面向json的替代布局和视图文件
>检测传入请求是否为AJAX
>显式渲染替代json布局/视图而不是text / html

一定要在app控制器中包含RequestHandler组件和JsHelper.

在给定的控制器中:

function test() {
    if($this->RequestHandler->isAjax()) {
        $this->set('data',$this->data);
        // Explicit call to render an ajax response,using a layout and view made specifically for ajax
        $this->layout = 'json';
        $this->render('ajax_test');    
    }
    // else render views/controllername/test.ctp like normal
}

你的app / views / layouts / json.ctp文件

<?PHP
    header("Pragma: no-cache");
    header("Cache-Control: no-store,no-cache,max-age=0,must-revalidate");
    header('Content-Type: text/x-json');
    header("X-JSON: ".$content_for_layout);

    echo $content_for_layout;
?>

您的app / views / controllername / ajax_test.ctp文件应仅包含:

<?PHP echo $js->object($data); ?>

现在,在您的页面上实际上将进行ajax调用,它可能看起来像这样,使用jQuery代码

<div id='status'></div>
<?PHP echo $form->create('Test',array('id'=>'testForm')),$form->input('message'),$form->end();
?>
<script type='text/javascript'>
    $('#testForm').submit(function(event) {
    event.preventDefault(); // interrupt form submission
    $.ajax({
        type: "POST",url: "/controllername/test",data: $('#testForm').serialize(),success: function(data,textStatus,xmlHttpRequest) {               
            $("#status").html(data.Test.message);
        },error: function(jqXHR,errorThrown) {
            alert("There was a problem processing the request: " + jqXHR);
        }
    });
});
</script>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐