【问题标题】:how to use ajax on magento's default adminhtml form.php?如何在magento的默认adminhtml form.php上使用ajax?
【发布时间】:2011-12-18 17:48:32
【问题描述】:
$event = $fieldset->addField('parent_id', 'select', array(
    'label' => Mage::helper('gallery')->__('Parent'),
    'required' => true,
    'name'=>'parent_id',
    'values'=>$ac,
    'onchange'=>'CheckSelectedItem()',
  )); 
  $event->setAfterElementHtml('<script>
       function CheckSelectedItem()
       {
       var ddllist= window.document.getElementById("parent_id");
       var itemName= ddllist.options[ddllist.selectedIndex].value;

如何在 form.php 上为位于名为“gallerydata.php”的根文件夹中的文件进行 ajax 调用。 我有一个名为“画廊”的扩展,用于从后端上传图像。所以我想通过使用调用该文件“gallerydata.php”的ajax从下拉列表中获取艺术家的ID。

       if(window.XMLHttpRequest)
          {// code for IE7+, Firefox, Chrome, Opera, Safari
          xmlhttp=new XMLHttpRequest();
          xmlhttp1=new XMLHttpRequest();
          }
        else
          {// code for IE6, IE5
          xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
          xmlhttp1=new ActiveXObject("Microsoft.XMLHTTP");
          }
        xmlhttp.onreadystatechange=function()
          {
          if (xmlhttp.readyState==4 && xmlhttp.status==200)
            {

             alert(xmlhttp.responseText);

            }
          }

        xmlhttp.open("GET","http://122.170.97.189:81/electriccityusa/gallerydata.php?q="+itemName,true);

       }

    </script>');     

【问题讨论】:

  • 为什么不用Prototype Javascript框架的Ajax APO?
  • 不清楚这里问的是什么。
  • 我的问题是“如何在magento上以adminhtml形式使用ajax????”

标签: ajax magento call adminhtml


【解决方案1】:

您可以简单地以 adminhtml 形式使用 ajax:

$event = $fieldset->addField('parent_id', 'select', array(
    'label'     => Mage::helper('gallery')->__('Parent'),
    'required'  => true,
    'name'      => 'parent_id',
    'values'    => $ac,
    'onchange'  => 'checkSelectedItem(this)',
  )); 
$event->setAfterElementHtml("<script type=\"text/javascript\">
    function checkSelectedItem(selectElement){
        var reloadurl = '". $this->getUrl('your-module-controller-action')."parent_id/' + selectElement.value;
        new Ajax.Request(reloadurl, {
            method: 'get',
            onLoading: function (transport) {
                $('parent_id').update('Searching...');
            },
            onComplete: function(transport) {
                    $('parent_id').update(transport.responseText);
            }
        });
    }
</script>");

现在您可以根据自定义模块控制器操作(在 reloadurl 中提到)中的要求获取选择值并执行操作。

希望这会有所帮助。

【讨论】:

  • 你的模块控制器动作我用什么?我正在尝试通过调用 catalog_category/edit 来触发类别页面的重新加载,但是 ajax 一直转到错误的 url(catalog_category/index 而不是 /edit)
  • 这就是答案。它帮助了我:)。谢谢
  • @MagePsycho 如何附加或设置 ajax 返回值,我无法设置此
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多