我在
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 举报,一经查实,本站将立刻删除。