作爲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