.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, время: 15:56. |