我正在尝试使用Magento开发一个小型网站,我正在尝试根据用户选择从下拉框中显示动态内容。
到目前为止,我已经完成了JavaScript并使用AJAX for XMLHTTP请求PHP文件,它基于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 :(得分:4)
1)您必须创建控制器。 的companyName / yuormodule /控制器/ AjaxController.php 2)在AjaxController.php中创建动作,例如indexAction()。参见代码部分
public function indexAction()
{
$this->loadLayout();
$this->renderLayout();
}
3)然后添加到yourlayout.xml(例如:app / design / frontend / base / default / layout / 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)最后,只需将此代码xmlhttp.open("GET","getLocations.php?countryID="+value,true);
更改为xmlhttp.open("GET","yourmodule/ajax/index/countryID/"+value,true);
答案 1 :(得分: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。