Dmitrii ‘Mamut’ Dimandt
1) хм.... сложно сказать :) Можно проверять, что файл был вызван через Ajax:
if($_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest')2) в jQuery 1.2 есть crossdomain Ajax
spiritzzz
Здравствуйте еще раз :) При?ел поблагодарить вас за помощь, ОЧЕНЬ помогли ) Столкнулся с маасенькой проблемкой недавно, по инету рыскал – не на?ел ре?ения. Точнее две проблемки:
1) у меня есть файл index.php. У меня два варианта работы сайта, с js и без. Если без js – то по запросу index.php?page=test инклудится файлик pages/test.php.
в этом файлике pages/test.php инклудится другой файлик путем допустим include(rrr.php), причем файлик rrr.php находится там же, где и index.php. Если я загружаю в index.php файл pages/test.php при помощи jq, то путь для файла rrr.php становится уже другим, на каталог вы?е. Получается что файл pages/test.php считает себя корнем :) оно то и верно, но как с этим бороться попроще? :)
2) как я понял по причине безопасности ajax не подгружает НЕлокальные файлы и ссылки... как это можно обойти? :)
Dmitrii ‘Mamut’ Dimandt
Вау! Какие люди!
Я программистом в Ки?иневе работаю на данный момент. А помню я весь класс на коне 9-го класса :) Как же вас забыть :)))
Пи?ите посылки: dmitriid [] gmail.com
:)
екатерина
Дима, привет! Это Катя Шурманова, на?ла ссылку на твой с кем-то разговор на ки?инев. ру. очень рада, что ты меня помни?ь! я живу в Сочи, работаю журналистом на портале деловых новостей. меня и мом материалы мо?но найти, набрав в яндексе имя и фамилию. вот мой интернет адрес katarish@yandex.ru. очень скучаю по ки?иневу, приезжаю каждый год!
хочется узнать о твоих новостях!
Dmitrii ‘Mamut’ Dimandt
На этот вопрос сложно ответить внятно :)
Я с этим сталкивался в Файрфоксе на локальных файлах. Несмотря на то, что в href находится что-то простенькое и коротенькое, из DOM видно, что там лежит полный адрес (видно, например, в Firebug‘е).
Как это ре?ается – хз :) Можно попробовать использовать split
SpirITzzz
Спасибо огромное! :)))) и опять новая проблемка ))))))
Вот такой код
function index_func(news_main) { news_main.find(“a”).click(function(){
if ($(this).attr(“id”) "backbt"){
var url = "news.php";
act(url);
}
else if ($(this).attr("id") “newsbt”){
var url = “news.php” + $(this).attr(“href”);
act(url);
}
function act(url) {
news_main.hide(‘slow’,function(){
$(this).empty();
$.get(url,{}, function(response){ news_main.append(response).fadeIn(“slow”);
index_func(news_main);
});
});
При первом нажатии на ссылку с id newsbt выполняется else if, выполняется нормально, при нажатии на backbt возвращаемся назад, и вот тут идет проблемка: в else if когда я жму на ссылку с id newsb к url прибавляется полный адрес сайта с http:// и тд, хотя ссылка в виде ?news=3 и тд. Почему при первом нажатии ок, а после нажатия на кнопку с айди бэк прибавляется етот дурацкий адрес? :)
Dmitrii ‘Mamut’ Dimandt
Дело в том, что для загруженых ссылок надо заново вызывать функцию, их обрабатывающую. То есть что-то в таком стиле:
function updateLinks(container)
{ container.find(‘a’).click( function(){ var url = $(this).attr(‘href’); container.hide( ‘slow’, function(){ container.empty(); $.get( url, {}, function(response) { container.append(response) .fadeIn(‘slow’); updateLinks(container); } ) } ); return false; } );
}$(document).ready( function(){ var id = $(”#test”); updateLinks(id); }
)
SpirITzzz
Это опять я :)))) Возник еще один маааленький вопросик. Вот я выложил страницы с проблемой. http://true-studio.com/spiritzzz/test/page1.html
Суть в том, что есть страница page1.html, в которой есть div с id=test. Потом далее идет кусок ва?его кода, который все ссылки нажатые в этом диве грузит в етот же див. Все работает до этого момента: подгружается через get page2.html, которая находится в этом же div с id=test, но уже ссылки из неё не обрабатываются, и ссылка открывается как обычная.
где я туплю? :))))
Dmitrii ‘Mamut’ Dimandt
можно использовать callback:
$('element').hide(
'slow',
function(){
$(this).empty();
}
)
$('element').hide(
'slow',
function(){
$(this).html('текст').show('slow')
}
)
SpirITzzz
Дополнение:
Суть в том, что мне нужно что бы див плавно исчез, очистился, в него загрузилось что-то и так же плавно появилось :) Но на практике див начинает плавно исчезать, тут же не успев исчезнуть очищается, в него загружается не что, он до конца исчезает и опять с тем нечто появляется. Получается Эффект “Мегания”.
SpirITzzz
Спасибо боль?ое за ответ! =)
Еще созрел один вопрос:
Делаю вот так:
my_div.fadeOut(“slow”);
my_div.empty();
ну или так my_div.fadeOut(“slow”).empty();
? получается, что my_div очищается рань?е, че окончится действие fadeOut. Как это можно ре?ить?
Dmitrii ‘Mamut’ Dimandt
> 1)как с кодировками бороться
Это легко – просто передавать данные только в utf-8 (увы, только в нем)
> как сделать, что бы в пределах данного DIV все ссылки нажатые в нем подгружались только в нем (без перезагрузки всей страницы
var my_div = $(‘селектор_дива’);
my_div.find(‘a’).click( function(){ var url = $(this).attr(‘href’);
$.get( url, {}, function(response){ my_div.append(response); } ); return false; } );
> Верно ведь, что картинку загрузки ве?ать нужно на ajaxSend, а по окончанию убирать на например ajaxSuccess?
По идее да. Работает (в теории) оно так:
$(’#indicator’).ajaxLoad( function(){ $(this).show(); }
).ajaxSuccess( function(){ $(this).hide(); }
);
Но, если честно, оно у меня корректно так и не заработало :)
> Как мне проверять, загрузились ли все данные в данный див
Только в функциях, наве?иваемых на success аякса. То есть:
$.get(
url,
{},
function(response){
some_div.html(response).show();
}
);
$.ajax(
url: url,
success: function(response){
some_div.html(response).show();
}
);
SpirITzzz
Ну в частности меня интересует:
1)как с кодировками бороться :) ?бо если делать так $(”#main”).load(“pages/i/index_main.php”); то кракозябли :)
2) как сделать, что бы в пределах данного DIV все ссылки нажатые в нем подгружались только в нем (без перезагрузки всей страницы).
3) Не могу сделать нормальную индикацию загрузки. Верно ведь, что картинку загрузки ве?ать нужно на ajaxSend, а по окончанию убирать на например ajaxSuccess?
4) Как мне проверять, загрузились ли все данные в данный див? Что бы выводить его уже с полностью загруженной информацией? Тесно связано с вопросом 3) :)
В принципе, это все ре?аемо, но нужно время, которого у меня нет...
Dmitrii ‘Mamut’ Dimandt
Можно пока здесь :)
Можно также задать вопрос, например, в Веб-форуме на RSDN.ru Я там довольно быстро отвечаю (под ником Mamut)
SpirITzzz
Добрый вечер :) Я вот начал изучение ajax, в частности jquery. ? у меня есть парочка простых для Вас, но ненможко непонятных для меня вопросов :) С вами можно связаться средствами например ICQ или ещё какого-нибудь мессенджера?
Dmitrii ‘Mamut’ Dimandt
Не я конечно занимаюсь :) Занимается некто Yariv Sadan Я просто хочу с ним разобраться в плане научиться и использовать в своих проектах :)
ослик иа
это ты сам, в смысле один, всем этим(ёрлывыб) занимае?ься? нормально, первонах, так сказать. молодца, мамут, флаг заслужил и даже барабан или трубу
Dmitrii ‘Mamut’ Dimandt
У меня руки не доходят галлерею нарисовать :)
А дойдут они, когда я разберусь с ErlyWeb :)
конь в пальто
мамонтище!! хде фотки? ну хде фотки и все тут? ты похоро?ему скажи, а тож мы можем и хобот твой тебе растянуть!!
Dmitrii ‘Mamut’ Dimandt
К сожалению, старая гостевая книга переносу не подлежит
spiritzzz
Спасибо боль?ое, ОПЯТЬ вы меня выручили, даже уже не знаю как Вас благодарить :)))
А вы с JQ UI не работали?
05-12-2007 21:30:52permalink