从AJAX调用PHP文件

时间:2011-08-02 07:13:40

标签: magento

我正在尝试使用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文件指向特定位置。

任何帮助,谢谢大家。

2 个答案:

答案 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