有不同的方式來實現這一點,我在這裏寫一個最簡單的
首先,你需要你的「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