2014-01-21 6 views
0

Я пытаюсь настроить jquery ajax в Magento. Я успешно создал пользовательскую страницу и пытаюсь настроить ajax на этой странице. Jquery работает, но ajax, похоже, ничего не делает. Странно, что у меня нет ошибок. мой config.xml выглядит следующим образом:Настройка Ajax Calls in Magento

<?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. Я просмотрел несколько примеров, но не решает проблему, которую я испытываю. Я блуждал, если кто-нибудь сможет помочь мне с моей дилеммой. Благодарю.

+0

Пробовал ли вы использовать Firebug для 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); 
    }, 
}); 

Это может помочь вам отладить проблему лучше, чем попытка поймать заявление.

0

Посмотрите @Ajax In Magento

  1. Debug ваш запрос Ajax с помощью Firebug для Firefox или Chrome инспектора

  2. Было бы гораздо лучше, чтобы поставить вас АЯКС логику в контроллере, а не в PHTML файл