2014-01-21 54 views
0

我想在Magento中設置jquery ajax。我已經成功設置了一個自定義頁面,並試圖在該頁面上設置一個ajax。 jQuery的作品,但阿賈克斯似乎沒有做任何事情。奇怪的是我沒有得到任何錯誤。 我config.xml文件看起來是這樣的:在Magento中設置Ajax調用

<?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具有檢索產品信息的代碼a nd應該在技術上將其傳回給index.phtml。我已經瀏覽了幾個例子,但沒有解決我遇到的問題。如果有人能夠幫我解決我的困境,我就會wan der不前。謝謝。

+0

您是否嘗試過使用Firebug for Firefox或Chrome Inspect Element來查看發佈了哪些數據並從服務器返回? –

+0

當我刪除dataType:'jsonp'時,我的警報在成功時被觸發。但是,我得到了整個HTML代碼,而不是隻是一個回聲,這是我在products.phtml –

+0

看看@ http://stackoverflow.com/questions/7448617/ajax-in-magento它會很多更好地把你的控制器中的ajax邏輯,而不是在phtml文件 –

回答

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語句更好的問題。

0

看看@Ajax In Magento

  1. 調試使用Firebug的Firefox或Chrome檢查

  2. 您的Ajax請求這將是更好的把你在你的控制器,而不是在一個PHTML AJAX邏輯文件