2011-08-02 87 views
2

我正在嘗試開發一個使用Magento的小站點,其中我試圖根據用戶選擇從下拉框中顯示動態內容。從AJAX調用PHP文件

到目前爲止,我已經做了JavaScript和AJAX使用針對PHP文件XMLHTTP請求,其基於由W3Schools的例子提供的代碼如下

function loadLocations(value){ 
var xmlhttp; 
if (value==0) 
{ 
    document.getElementById("locationList").innerHTML=""; 
    return; 
} 
if (window.XMLHttpRequest) 
{// code for IE7+, Firefox, Chrome, Opera, Safari 
    xmlhttp=new XMLHttpRequest(); 
} 
else 
{// code for IE6, IE5 
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
} 
xmlhttp.onreadystatechange=function() 
{ 
    if (xmlhttp.readyState==4 && xmlhttp.status==200) 
    { 
    document.getElementById("locationList").innerHTML=xmlhttp.responseText; 

    } 
} 
xmlhttp.open("GET","getLocations.php?countryID="+value,true); 
xmlhttp.send(); 

}

和的getLocations。 PHP被放置在路徑

應用程序/代碼/本地/公司/模塊/塊/

我的疑問是如何將getLocations.php文件指向特定的位置。

任何幫助,謝謝所有。

+0

好功夫。但是,你應該節省自己的麻煩,只是使用[Ajax.Updater](http://api.prototypejs.org/ajax/Ajax/Updater/) – clockworkgeek

+0

感謝您的寶貴讚賞。 – Vignesh

回答

4

1)您必須創建控制器。 companyName/yuormodule/controllers/AjaxController.php 2)在AjaxController.php中創建動作,例如indexAction()。見代碼段

public function indexAction() 
{ 
    $this->loadLayout(); 
    $this->renderLayout();  
} 

3)然後添加到yourlayout.xml(例如:應用程序/設計/前端/鹼/默認/佈局/ yourlayout.xml)下一個代碼

<yourmodule_ajax_index> 
     <block type="yourmodule/getlocations" name="root" template="path/file.phtml"> 
     </block> 
    </yourmodule_ajax_index> 

4)然後,你必須更新confix.xml中的佈局。

<layout> 
    <updates> 
     <yourmodule> 
      <file>yourlayout.xml</file> 
     </yourmodule> 
    </updates> 
</layout> 

5)你的getLocation類的實例後,將在file.phtml可用。

6)而在去年,只需要在自己的教學AJAX這個代碼​​改爲xmlhttp.open("GET","yourmodule/ajax/index/countryID/"+value,true);

1

您應該製作一個控制器類來處理您的功能。例如:app/code/local/company/module/controllers/AjaxController.php。您可以在線閱讀有關控制器(它們是magento的核心部分)。那麼你會打電話最有可能是http://mywebsite.dom/module/ajax/getlocations/countryID/34/

據我所知,這將是最好的方法。

P.S.如果你是Magento的新手,我會建議這個系列學習一下:http://www.magentocommerce.com/knowledge-base/entry/magento-for-dev-part-1-introduction-to-magento