Вызов файла PHP из AJAX - PullRequest
       2

Вызов файла PHP из AJAX

2 голосов
/ 02 августа 2011

Я пытаюсь разработать небольшой сайт с использованием Magento, в котором я пытаюсь отображать динамический контент на основе выбора пользователя из выпадающего списка.

До сих пор я создал JavaScript и использовал запрос AJAX для 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 ]

4 голосов
/ 02 августа 2011

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 голос
/ 02 августа 2011

Вы должны создать класс контроллера для управления вашей функциональностью.Так, например: app / code / local / company / module / controllers / AjaxController.php .Вы можете прочитать в Интернете о контроллерах (они являются основной частью magento).Тогда вы, скорее всего, назовете что-то вроде http://mywebsite.dom/module/ajax/getlocations/countryID/34/.

Насколько я знаю, это будет лучший метод.

PS Если вы новичок в Magento, я бы предложил эту сериюнемного узнать: http://www.magentocommerce.com/knowledge-base/entry/magento-for-dev-part-1-introduction-to-magento.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...