Magento Customer edit - Ajax вызывается дважды - PullRequest
0 голосов
/ 13 декабря 2011

В качестве продолжения этого вопроса У меня есть другой вопрос.

Мой взгляд выглядит примерно так:

<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/. Если я смотрю на Firebug или аналогичный, я вижу, что один и тот же запрос запускается еще раз, так что в целом один и тот же запрос выполняется дважды: double-loading посмотреть полное изображение здесь

Можете ли вы объяснить, что не так? Я попытался в другом производственном цехе, где я работаю, и это также вызвало двойную загрузку страницы.

1 Ответ

0 голосов
/ 13 декабря 2011

При загрузке документа может возникнуть проблема, лучше вызвать AJAX при событии загрузки

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);
      }
    });
 }

 document.observe('dom:loaded', function() {
     getTicketInfo();
 });
...