Формат корзины Суммирует 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 & 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 в блоке итогов корзины?
Пожалуйста, помогите.
Спасибо.
1 answers
Вместо использования
$('shopping-cart-totals-table').update(mydata);
Попробуйте использовать
$('shopping-cart-totals-table').update(mydata.myresponse);
Вы отправляете JSON с ключом myresponse и html-кодом вашего блока корзины в качестве значения для этого ключа. Таким образом, mydata будет объектом после преобразования json в объект JS, и этот объект должен иметь свойство myresponse с HTML-кодом для блока корзины.