Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 29.03.2012, 01:55
Аватар для papochka
Интересующийся
Отправить личное сообщение для papochka Посмотреть профиль Найти все сообщения от papochka
 
Регистрация: 29.03.2012
Сообщений: 10

.ajax и load() - конфликт... или я дурак?
Не ругайтесь граждане на недоучку, просто помогите штоле ))
Есть заимствованная корзинка на аяксе - называется jcart. Соответственно подгружается корзинка в div#cart. Код ниже (сорри за целиком).
И есть загрузка фрагмента страницы методом load() - по клику на a.topen в div#tbox. Код еще ниже.

Отдельно все работает. А вот вместе... при клике на a.topen
- в div#tbox попадает нужный контент (со страницы page.php)
- а в div#cart - ВСЯ страница page.php.

Устал искать решение в темной комнате.
Джон! Ай ниид хэлп!

Код корзинки
$(function() {
	var a=(function(){

		var k="http://kremlin.ru/cart",
			b=$("#card"),
			e=$("[name=jcartToken]").val(),
			i=$("#jcart-tooltip");
			
		var d=(function(){
			var l=null;
			$.ajax({
				url:k+"/config.php",
				data:{ajax:"true"},
				dataType:"json",
				async:false,
				success:function(m){l=m},
				error:function(){alert("Ajax!Ошибка: Измените путь в файле cart.js.")}
				});
				return l
		}());
		
		var f=(function(){
			if(d.tooltip===true){
				i.text(d.text.itemAdded);
				$(".jcart [type=submit]").mouseenter(function(m){
					var l=m.pageY+25,n=m.pageX+-10;
					$("body").append(i);
					i.css({top:n+"px",left:l+"px"})
				}).mousemove(function(m){
					var n=m.pageY+25,l=m.pageX+-10;
					i.css({top:n+"px",left:l+"px"})
				}).mouseleave(function(){i.hide()})
			}
			$("#jcart-buttons").remove();
			$.ajaxSetup({
				type:"POST",
				url:k+"/relay.php",
				success:function(l){b.html(l);$("#jcart-buttons").remove()},
				error:function(n,p){
						var o=n.status,l="Ajax!Ошибка: ";
						if(o===0){l+="Проверьте интернет-соединение."}
						if(o===404||o===500){l+=o}
						if(p==="parsererror"||p==="timeout"){l+=p}
						alert(l)
						}
				})
		}());
		
		var c=$("#jcart-is-checkout").val();
		
		function j(n){
			var m=n.find("[name="+d.item.qty+"]"),l=n.find("[name="+d.item.add+"]");
			$.ajax({
				data:n.serialize()+"&"+d.item.add+"="+l.val(),
				success:function(o){
						if(m.val()>0&&i.css("display")==="none"){i.fadeIn("100").delay("400").fadeOut("100")}
						b.html(o);
						$("#jcart-buttons").remove()
						}
			})
		}
		
		function g(l){
			var o=l.parent().find('[name="jcartItemId[]"]').val();
			var n=l.val();
			if(n){var m=window.setTimeout(function(){
											$.ajax({ data:{jcartUpdate:1,itemId:o,itemQty:n,jcartIsCheckout:c,jcartToken:e} })
										  },1000)
			}
			l.keydown(function(p){if(p.which!==9){window.clearTimeout(m)}})
		}
		
		function h(m){
			var n=m.attr("href");
			n=n.split("=");
			var l=n[1];
			$.ajax({
					type:"GET",
					data:{jcartRemove:l,jcartIsCheckout:c}
			})
		}
		$(".jcart").submit(function(l){j($(this));l.preventDefault()});
		b.keydown(function(l){if(l.which===13){l.preventDefault()}});
		b.delegate('[name="jcartItemQty[]"]',"keyup",function(){g($(this))});
		b.delegate(".jcart-remove","click",function(l){h($(this));l.preventDefault()})
	}())
});


Код загрузки фрагмента
$(function(){
$('.topen').live("click", function(){
 var url = $(this).attr("href")+' #'+$(this).attr("rel");  // ссылка на page.php#fragment
 var loaderImg = "<img src='loader.gif' />";
 $("div#tbox").html(loaderImg).load(url);
 return false;
});
});
Ответить с цитированием
  #2 (permalink)  
Старый 29.03.2012, 15:34
Аватар для papochka
Интересующийся
Отправить личное сообщение для papochka Посмотреть профиль Найти все сообщения от papochka
 
Регистрация: 29.03.2012
Сообщений: 10

Эх, ну где же ГУРУ в добром настроении, что глянув беглым опытным взглядом скажет: "строка такая-то, символ такой-то - исправь и будет тебе щастье!" ?????
Ответить с цитированием
  #3 (permalink)  
Старый 29.03.2012, 19:34
Аватар для papochka
Интересующийся
Отправить личное сообщение для papochka Посмотреть профиль Найти все сообщения от papochka
 
Регистрация: 29.03.2012
Сообщений: 10

Изменил код загрузки фрагмента - вместо load() использовал $.ajax
$('.topen').live("click", function(){
 var loaderImg = "<img src='loader.gif' />";
 var url = $(this).attr("href");
 var rel = 'div#'+$(this).attr("rel");
 $("div#tbox").html(loaderImg).html(function(){
 			var l=loaderImg;
			$.ajax({
				url:url,
				dataType:"html",
				async:false,
				success:function(m){l=$(m).find(rel)},
				error:function(){alert("Ajax!Ошибка.")}
				});
				return l
 });
 $("div#tbox").fadeIn('fast');
 return false;
});


может коряво (может кто-то поправит?), но проблема исчезла.

*для синхронного запроса решение тут. спасибо melky

всем спасибо за участие, однако вопрос актуален - load и ajax не сходятся характерами? или что?

Последний раз редактировалось papochka, 30.03.2012 в 13:06.
Ответить с цитированием
  #4 (permalink)  
Старый 14.11.2014, 10:12
Новичок на форуме
Отправить личное сообщение для mydmitry Посмотреть профиль Найти все сообщения от mydmitry
 
Регистрация: 14.11.2014
Сообщений: 1

Уж много лет прошло с тех пор. Гуру очевидно утерлись.
Papochka а у Вас осознание причин пришло? Поделитесь.
У меня просто такая же беда, я уже все перебрал, никак не могу найти причину происходящего.
Ответить с цитированием
  #5 (permalink)  
Старый 16.11.2014, 01:40
Аватар для bes
bes bes вне форума
Профессор
Отправить личное сообщение для bes Посмотреть профиль Найти все сообщения от bes
 
Регистрация: 22.03.2012
Сообщений: 3,744

Сообщение от mydmitry
Уж много лет прошло с тех пор. Гуру очевидно утерлись.
Papochka а у Вас осознание причин пришло? Поделитесь.
У меня просто такая же беда, я уже все перебрал, никак не могу найти причину происходящего.
причина в задании success в
http://api.jquery.com/jQuery.ajaxSetup/

к тому же
Цитата:
Description: Set default values for future Ajax requests. Its use is not recommended.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не срабатывает bind(и click) после load (или get) dijah jQuery 3 27.01.2009 20:05