Формат корзины Суммирует HTML из ответа JSON


Мой Файл Контроллера

public function myAction() {


        $response = array();
        $response['myresponse'] = $this->myAjax();
        $this->getResponse()->clearHeaders()->setHeader('Content-type','application/json',true);
        return $this->getResponse()->setBody(json_encode($response));
    }



    protected function myAjax()
    {

        $layout = $this->getLayout();
        $totalsBlock = $layout->createBlock('checkout/cart_totals')->setTemplate('checkout/cart/totals.phtml');
        return $totalsBlock->toHtml();
    }

Мой ответ JSON

{"myresponse":" <table id=\"shopping-cart-totals-table\">\n <col \/>\n <col width=\"1\" \/>\n <tfoot>\n <tr>\n <td style=\"\" class=\"a-right\" colspan=\"1\">\n <strong>Grand Total<\/strong>\n <\/td>\n <td style=\"\" class=\"a-right\">\n <strong><span class=\"price\">$90.56<\/span><\/strong>\n <\/td>\n<\/tr>\n <\/tfoot>\n <tbody>\n <tr>\n <td style=\"\" class=\"a-right\" colspan=\"1\">\n Subtotal <\/td>\n <td style=\"\" class=\"a-right\">\n <span class=\"price\">$820.56<\/span> <\/td>\n<\/tr>\n<tr>\n <td style=\"\" class=\"a-right\" colspan=\"1\">\n Shipping &amp; Handling (Flat Rate - Fixed) <\/td>\n <td style=\"\" class=\"a-right\">\n <span class=\"price\">$90.00<\/span> <\/td>\n<\/tr>\n<tr>\n <\/tr>\n <\/tbody>\n <\/table>\n"}

Моя незавершенная функция

new Ajax.Request("<?php echo $formAction;?>", {
           method: 'post',
           postBody: "mypostdata="+$('my_value').value,
           onComplete: function(data) {
                var mydata = data.responseText.evalJSON(true);
                $('shopping-cart-totals-table').update(mydata);
            }
    });

Блок итогов корзины обновляется, но с неправильным форматом HTML. Как я мог бы сделать это в форматированных данных и показать правильный HTML в блоке итогов корзины?

Пожалуйста, помогите.

Спасибо.

Author: Jordan, 2014-08-26

1 answers

Вместо использования

$('shopping-cart-totals-table').update(mydata);

Попробуйте использовать

$('shopping-cart-totals-table').update(mydata.myresponse);

Вы отправляете JSON с ключом myresponse и html-кодом вашего блока корзины в качестве значения для этого ключа. Таким образом, mydata будет объектом после преобразования json в объект JS, и этот объект должен иметь свойство myresponse с HTML-кодом для блока корзины.

 1
Author: Paras Sood, 2014-08-26 06:12:58