加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

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

发布时间:2020-12-13 17:07:06 所属栏目:PHP教程 来源:网络整理
导读:我在 PHP中使用过很多AJAX,但是现在我正在尝试学习CakePHP,而且还没有任何关于如何在CakePHP 1.3中使用AJAX的好/简单示例.我能找到的唯一例子是分页(不是我需要的),或者在强制你包含scriptaculous或prototype时使用弃用的助手. 有没有关于如何使用AJAX w / C
我在 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>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读