Обновление ссылки. Ajax

Статус
Закрыто для дальнейших ответов.

De_nis

Новичок
Регистрация
28.09.2012
Сообщения
2
Всем привет. Глубокоуважаемые ГУРУ, обращаюсь к Вам за помощью...

Есть ссылка "Моя корзина" типа
Код:
<a class="noitems" href="бла-бла-бла/checkout/cart/">Моя корзина</a>
Есть скрипт
Код:
/*
* ajaxcart javascript;
*/

var test;
Event.observe(window, 'load', function () {
var containerDiv = $('containerDiv');
if(containerDiv)
test = new LightboxAJC(containerDiv);
});
function cart_form(url)
{
data = $('product_addtocart_form').serialize();
ajax_add(url,data);
}
function ajax_add(url,param)
{
tam = url.search("checkout/");
tam2 = url.search("product/");
str1 = url.substr(0,tam)+'ajaxcart/index/add/';
str2 = url.substr(tam2,url.length);
link = str1+str2;
var check = url.search("options");
if(check > 0){
window.location.href = url;
}
else{
var tmp = url.search("in_cart");
test.open();
new Ajax.Request(link, {
parameters:param,
onSuccess: function(data) {
	 if(tmp > 0 ) {
	 var host = find_host(url);
	 window.location.href = host+'index.php/checkout/cart/';
	 }
	 else{
	 //result = data.responseText;alert(result);
	 $('ajax_content').innerHTML = data.responseText;
	
	 if($('ajax_content').down('.haveitems, .noitems')){
	 var count_cart = $('ajax_content').down('.haveitems, .noitems').innerHTML;	
	 $$('.haveitems, .noitems').each(function (el){
	 el.innerHTML = count_cart;
	 });
	 }
	
	 if($('ajax_content').down('.block-cart')){
	 var ajax_product = $('ajax_content').down('.block-cart').innerHTML;
	 $$('.block-cart').each(function (el){
		 el.innerHTML = ajax_product;				
	 });
	 }
	
	 if($('ajax_content').down('.col-main')){
	 var ajax_result = $('ajax_content').down('.col-main').innerHTML;
	 $$('.ajaxcart_row1').each(function (el){
		 el.innerHTML = ajax_result;				
	 });
	 }
	
	 $('ajax_loading').hide();
	 $('ajaxcart_conent').show();
	 Event.observe('closeLink', 'click', function () {	
	 test.close();
	 $$('.ajaxcart_row1').each(function (el){
		 el.innerHTML = '';				
	 });
	 $('ajax_loading').show();
	 });
	 }
}
});
}
}

function setLocation(url){
var tam = url.search("checkout/cart/");
if(tam > 0) ajax_add(url);
else window.location.href = url;
}
document.observe("dom:loaded", function() {

var cartInt = setInterval(function(){
if (typeof productAddToCartForm != 'undefined'){

if(test){
var tam = $('product_addtocart_form').serialize();
var check = tam.search("ajaxcart");
if(check < 0){	
	 productAddToCartForm.submit = function(url){
	 if(this.validator && this.validator.validate()){		
	 cart_form($('product_addtocart_form').readAttribute('action'));
	 clearInterval(cartInt);
	 }
	 return false;
	 }
}
}
} else {
clearInterval(cartInt);
}
},500);

});
function find_host(url)
{
var tmp = url.search("index.php");
var str = url.substr(0,tmp)
return str;
}
Есть PHP
Код:
/**
* Links block
*
* @category Mage
* @package	 Mage_Checkout
* @author	 Magento Core Team <core@magentocommerce.com>
*/
class Mage_Checkout_Block_Links extends Mage_Core_Block_Template
{
/**
	 * Add shopping cart link to parent block
	 *
	 * @return Mage_Checkout_Block_Links
	 */
public function addCartLink()
{
	 $parentBlock = $this->getParentBlock();
	 if ($parentBlock && Mage::helper('core')->isModuleOutputEnabled('Mage_Checkout')) {
		 $count = $this->getSummaryQty() ? $this->getSummaryQty()
			 : $this->helper('checkout/cart')->getSummaryCount();
		 if ($count == 1) {
			 $text = $this->__('My Cart (%s item)', $count);
			 $classvar = 'class="haveitems"';
		 } elseif ($count > 0) {
			 $text = $this->__('My Cart (%s items)', $count);
			 $classvar = 'class="haveitems"';
		 } else {
			 $text = $this->__('My Cart');
			 $classvar = 'class="noitems"';
		 }
		 $parentBlock->removeLinkByUrl($this->getUrl('checkout/cart'));
		 $parentBlock->addLink($text, 'checkout/cart', $text, true, array(), 50, null, $classvar );
	 }
	 return $this;
}
/**
	 * Add link on checkout page to parent block
	 *
	 * @return Mage_Checkout_Block_Links
	 */
public function addCheckoutLink()
{
	 if (!$this->helper('checkout')->canOnepageCheckout()) {
		 return $this;
	 }
	 $parentBlock = $this->getParentBlock();
	 if ($parentBlock && Mage::helper('core')->isModuleOutputEnabled('Mage_Checkout')) {
		 $text = $this->__('Checkout');
		 $parentBlock->addLink(
			 $text, 'checkout', $text,
			 true, array('_secure' => true), 60, null,
			 'class="top-link-checkout"'
		 );
	 }
	 return $this;
}
}
Так вот при отработке скрипта в указанной ссылке происходит обновление типа
Код:
<a class="noitems" href="бла-бла-бла/checkout/cart/">Моя корзина (1 шт.)</a>
А нужно чтобы обновлялся еще и атрибут class, и ссылка имела бы вид типа
Код:
<a class="haveitems" href="бла-бла-бла/checkout/cart/">Моя корзина (1 шт.)</a>
Если же обновить всю страницу то значение class обновляется.

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

czp

czp
Регистрация
05.06.2011
Сообщения
635
я не спец в джейквери но мне кажется тут надо так, могу и ошибиться, правда не по джейквери делаю
Код:
if($('ajax_content').down('.haveitems, .noitems')){
		 var count_cart = $('ajax_content').down('.haveitems, .noitems').innerHTML;	
		 $$('.haveitems, .noitems').each(function (el){
el.innerHTML = count_cart;

el.setAttribute('class', 'haveitems'); //// добавить можно конечно и другие понты налепить проверку что бы повторно не перезначать класс
		 });
		 }
попробуйте, скажете если заработает?
 

De_nis

Новичок
Регистрация
28.09.2012
Сообщения
2
Спасибо большое! Заработало!
 
Статус
Закрыто для дальнейших ответов.
Верх Низ