有不同的方式来实现这一点,我在这里写一个最简单的
首先,你需要你的“index.ctp”文件移动到“查看/你的控制器名称/ “文件夹。
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 cal L将进一步调用你的控制器的方法(实现你的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文件相关方法。设置autoRender为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;
}
然而,而不是写核心JavaScript和Ajax方法可以调用inbuild阿贾克斯帮手一样。
您无法将变量传递给html文件。你将不得不为它创建一个ctp。并通过控制器中定义的适当方法传递它。 –
谢谢你让我知道 – mynameisjohn