有不同的方法来实现这一点,这里我写的是最简单的
首先,您需要将“index.ctp”文件移动到“View/YOUR CONTROLLER NAME/”文件夹。
1)要访问视图中的变量,您需要像这样从控制器的方法中设置它
public index(){
$this->set('yourVariable', 'Your Value');
}
2) 要访问视图文件 (index.ctp) 中的值,您需要像这样调用此变量
$yourVariable;//If you want to print this then you can write like this
echo $yourVariable;
3) 要从 index.ctp 调用 ajax 文件,最简单的方法是在此锚点上调用 onclick 事件,onclick 事件将调用 JAVASCRIPT 方法,该方法将进一步进行 ajax 调用并将输出放置在您的元素中index.ctp,ajax调用会进一步调用你的控制器方法(这里实现你的html相关逻辑)
例如,
<a href="#" class="file-link" onclick="yourAjaxCallMethod('http://'.<?php echo $_SERVER['HTTP_HOST'].$this->webroot;?>.'yourController/ajaxMethod/'.<?php echo $yourVariable;?>)"><span class="icon file-png"></span>Simple gallery</a>
<div id="yourAjaxFileOutputReplaceMentDiv"></div>
4)在你的JS文件中创建一个javascript方法,这个JS文件必须加载到你的布局文件中。
function yourAjaxCallMethod(BaseURL,yourVarible)
{
//Initialize Ajax Method
var req = getXMLHTTP();//Let's this method Initialize your Ajax
if (req)
{
req.onreadystatechange = function() {
if (req.readyState == 4)
{
if (req.status == 200)
{
document.getElementById('yourAjaxFileOutputReplaceMentDiv').innerHTML=req.responseText;
} else {
alert("There was a problem while using XMLHTTP:\n" + req.statusText);
}
}
}
var URL = BaseURL+yourVarible+'/'+Math.random();
req.open("GET", URL, true);
req.send(null);
}
}
5)您的控制器“yourController”中的AJAX文件相关方法。将自动渲染设置为 False
public function ajaxMethod(){
$this->autoRender = false;
//Check $this->request['pass'] for arguments send from ajax call
$retreivedVariable = $this->request['pass'][0];
echo 'I retrieved variable'.$retreivedVariable;
}
但是,您可以调用内置的 Ajax Helper,而不是编写核心 javascript 和 ajax 方法。