我正在尝试在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。我已经看了几个例子,但非正在解决我遇到的问题。如果有人能够帮助我解决我的困境,那我就很徘徊。感谢。
答案 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
使用Firebug for Firefox或Chrome Inspector调试您的ajax请求
将ajax逻辑放在控制器而不是phtml文件中会好得多