2011-08-02 70 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