作为this question的后续处理,我还有其他问题。Magento客户编辑 - Ajax调用两次
我的观点看起来是这样的:
<span id="tickets">?</span>
<script type="text/javascript">
var url = '<?php echo Mage::helper("adminhtml")->getUrl("greenspan_tickets/index", array('customer_id' => $this->getRequest()->getParam('id'))); ?>';
function getTicketInfo(){
new Ajax.Request(url, {
method: 'get',
onComplete: function(transport) {
var json = transport.responseText.evalJSON();
document.getElementById('tickets').innerHtml = json.ticket_count;
alert(document.getElementById('tickets').innerHtml);
}
});
}
getTicketInfo();
</script>
用户与“1”(正确的从JSON响应值)的正确值惊动两次。然而,对于用户来说,#tickets的值是仍然是只是“?”。
我做错了什么?
原因可能是这样的:在页面加载过程中,页面本身当然会加载 - URL是沿着/index.php/admin/customer/edit/id/1/key/7a13c7d7c2feecc16003c82bbf0f6201/
的行。如果我看萤火虫或类似我看到了相同的请求被触发一次,从而总共相同的请求被做两次: see full image here
你能解释一下什么是错的?我试着与另一家生产车间,我正在运行,这也导致双重加载页面。
作为一个方面说明,我建议不要放置javscript'url'变量在全球范围内,而是在'getTicketInfo'函数内定义它。在全局范围内放置任何变量是很危险的,尤其是那些具有诸如'url'这样的通用名称的变量,因为页面上其他书写的JavaScript可能会覆盖它。 – Max
另一个需要注意的是,在Prototype中有一个'document.getElementById()'的快捷方式,它是$()' – Max