在Magento中设置Ajax Calls

时间:2014-01-21 18:46:03

标签: jquery ajax magento

我正在尝试在Magento中设置jquery ajax。我已成功设置自定义页面,并尝试在该页面上设置ajax。 jquery有效,但ajax似乎没有做任何事情。奇怪的是我没有得到任何错误。 我的config.xml看起来像这样:

<?xml version="1.0"?>
<config>
  <modules>
<JJ_LooseDiamonds>
  <version>0.1.0</version>
</JJ_LooseDiamonds>
</modules>
<frontend>
  <routers>
    <loosediamonds>
    <use>standard</use>
      <args>
        <module>JJ_LooseDiamonds</module>
        <frontName>loosediamonds</frontName>
      </args>
  </loosediamonds>
</routers>
    <layout>
      <updates>
        <loosediamonds>
          <file>loosediamonds.xml</file>
        </loosediamonds>
      </updates>
    </layout>
</frontend>
<global>
<helpers>
  <loosediamonds>
    <class>JJ_LooseDiamonds_Helper</class>
  </loosediamonds>
</helpers>
<blocks>
  <loosediamonds>
    <class>JJ_LooseDiamonds_Block</class>
  </loosediamonds>
</blocks>
</global>
</config> 

然后,我的布局看起来像这样:

<?xml version="1.0"?>   
<layout version="0.1.0">   
  <loosediamonds_index_index>   
    <reference name="root">   
      <action method="setTemplate"><template>page/2columns-left.phtml</template> </action>   
   </reference>
  <reference name="left">   
    <block type="loosediamonds/left" name="loosediamonds_left"  template="loosediamonds/left.phtml"/>   
  </reference>   
  <reference name="content">   
    <block type="loosediamonds/index" name="loosediamonds_index" template="loosediamonds/index.phtml"/>   
    <block type="loosediamonds/product" name="loosediamonds_product" template="loosediamonds/product.phtml" />
  </reference>   
</loosediamonds_index_index>   
</layout>   

我的index.phtml是主要的自定义页面,它有一个ajax实现:

<script type="text/javascript">
(function($) {

    $(".diamondtable tr").click ( function () {
        var data = "id="+$(this).data("id");

        try {
            jQuery.ajax({
                url:"<?php echo $this->getUrl('product.phtml') ?>",
                dataType:'jsonp',
                type:'post',
                data:data,
                success:function (data) {
                    alert (data);
                }
            });
        } catch (e) {
            alert (e);
        }           
    })
})(jQuery)

并且product.phtml具有检索产品信息的代码,并且应该在技术上将其传递回index.phtml。我已经看了几个例子,但非正在解决我遇到的问题。如果有人能够帮助我解决我的困境,那我就很徘徊。感谢。

2 个答案:

答案 0 :(得分:0)

尝试将完整和错误方法添加到ajax调用中。这有助于确定您是否确实收到了回复。

例如:

$.ajax({
    url:"<?php echo $this->getUrl('product.phtml') ?>",
    dataType:'jsonp',
    type:'post',
    data:data,
    success:function (jqXHR, textStatus) {
         alert(textStatus);
    },
    error: function (jqXHR, textStatus) {
        alert(textStatus);
    },
    complete: function (jqXHR, textStatus) {
        alert(textStatus);
    },
});

这可以帮助您比try catch语句更好地调试问题。

答案 1 :(得分:0)

看看@ Ajax In Magento

  1. 使用Firebug for Firefox或Chrome Inspector调试您的ajax请求

  2. 将ajax逻辑放在控制器而不是phtml文件中会好得多