.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; }); }); |
Эх, ну где же ГУРУ в добром настроении, что глянув беглым опытным взглядом скажет: "строка такая-то, символ такой-то - исправь и будет тебе щастье!" ????? :)
|
Изменил код загрузки фрагмента - вместо 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 а у Вас осознание причин пришло? Поделитесь. У меня просто такая же беда, я уже все перебрал, никак не могу найти причину происходящего. |
Цитата:
http://api.jquery.com/jQuery.ajaxSetup/ к тому же Цитата:
|
Часовой пояс GMT +3, время: 05:39. |