2013-07-18 54 views
0

對不起,提出這個問題..我正在Cakephp 2.x ...我有我的控制器名稱文件夾中的查看頁面,例如Controller/index.ctp ...和我有ajaxfiles存儲在應用程序/ Webroot公司/ AJAX/ajaxfile.htmlCakephp:查看頁面上添加另一個視圖頁面鏈接

現在在我的index.php文件我正在acessing Ajax頁面這樣

   <a href="ajax-demo/ajaxfile.html" class="file-link"> 
            <span class="icon file-png"></span> 
            Simple gallery</a> 

控制器

 public function index(){ 


     } 

現在的問題是我想將變量發送到我的兩個頁面... index.ctp和ajaxfile ...我該如何做到這一點?什麼是解決這些事情的最佳途徑....

我必須從webroot移動ajaxfiles並將其粘貼到控制器名稱文件夾下嗎? 如果是這樣那麼我怎麼能發送變量到ajax文件沒有模型和控制器

請如果任何人知道解決方案,然後請指教我。並給出一個例子太

+1

您無法將變量傳遞給html文件。你將不得不爲它創建一個ctp。並通過控制器中定義的適當方法傳遞它。 –

+0

謝謝你讓我知道 – mynameisjohn

回答

1

有不同的方式來實現這一點,我在這裏寫一個最簡單的

首先,你需要你的「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阿賈克斯幫手一樣。

+1

謝謝你rohit爲您的詳細答案..但我認爲arun權利.i必須使功能和所有的東西... – mynameisjohn

+0

是的,如果你詳細閱讀答案你會發現東西是方法你的控制器像你的index.ctp是你的控制器中的一種方法,即index(),你的ajax相關文件不過是你的控制器中沒有視圖(.ctp文件)的方法,它正在推銷你的內容。要以更加嚴謹的方式實現它,請使用元素來呈現HTML部分。您可以將視圖(.ctp)文件中的變量傳遞給您的元素 –

相關問題