Сначала позвольте мне сказать, что я изучил сценарии самостоятельно, поэтому мои подходы могут быть немного странными.
Я хочу вызывать изображения в div, используя AJAX, но с тегом Thickbox, поэтому при нажатии большого пальца изображения большое изображение отображается с помощью Thickbox (jQuery).
Вот пример страницы: нажмите здесь
ОК, пожалуйста, нажмите в меню «фото», а затем откройте одно из изображений в левом меню, например, «Сумерки». Сумерки изображения будут размещены в главном окне.
Теперь я хочу открыть изображение с помощью Thickbox при нажатии на него. Но это не работает, оно просто открывает изображение в том же окне.
Однако Thickbox работает нормально, если я просто добавляю изображение в test2.php следующим образом:
<a href="images/test1.jpg" class="thickbox" rel="gallery"><img id="images" src="images/test1.jpg" alt="Single Image" /></a>
Вот как устроен мой бэкэнд.
Все необходимые js-файлы (jQuery, Thickbox и т. Д.) Интегрированы в test2.php
При нажатии на одну из ссылок в меню фотографий на getwork.php отправляется вызов AJAX с идентификатором фотографии.
function createRequestObject()
{
var ro;
var browser = navigator.appName;
if(browser == "Microsoft Internet Explorer")
{
ro = new ActiveXObject("Microsoft.XMLHTTP");
}
else
{
ro = new XMLHttpRequest();
}
return ro;
}
var http = createRequestObject();
var katcheck;
function sndReq(req)
{
var req2 = req;
katcheck = req.slice(0, 1);
if (katcheck == "k")
{
var katid = req2.slice(3,4);
http.open('get', 'getkat.php?kat='+katid);
http.send(null);
http.onreadystatechange = handleResponse;
}
else
{
if(startcheck==true){ var param = req;
http.open('get', 'getwork.php?id='+param);
http.send(null);
http.onreadystatechange = handleResponse;}
else{
$('#videoleft')
.animate( {"left": "-800px"},
600, 'easeInQuad',
function(){
var param = req;
http.open('get', 'getwork.php?id='+param);
http.send(null);
http.onreadystatechange = handleResponse;
} // this is the callback function
)
.animate(
{"top": "0px", "left": "800px"},
{ queue:true, duration:1},
function(){$(this).hide();}
);
}
}
}
function handleResponse()
{
if(http.readyState == 4)
{
var response = http.responseText;
if (katcheck == "k")
{
document.getElementById("videomenue").innerHTML = response;
$("#videomenue").animate({"top": "0px", "left": "0px"},{ queue:true, duration:1}).show(500);
$('#videoleft').css('float', 'right');
}
else
{
document.getElementById("post").innerHTML = response;
if(startcheck==true){ startcheck=false;}
else
{
$('#videoleft').show().animate({"top": "0px", "left":"0px"},{ queue:true, duration:800, easing: 'easeOutBack'});
}
}
}
}
Хорошо, а теперь, что происходит в getwork.php:
{
$imgecho = ('<div class="img"><a href="'.$src.'?height=300&width=300modal=true" class="thickbox" rel="gallery"><img src="'.$image.'" width="'.$width1.'" height="'.$heightpic.'" alt="'.$row['title'].'" style="border: solid 1px grey;" /></a></div>');
}
echo ('<div class="titleBG"></div><p class="title">'.$row['title'].'</p>'.$imgecho.''); break;
Я, конечно, разобрал его только до важной части. Файл php работает правильно, но почему-то не работает ни один из примененных тегов, необходимых для Thickbox.
Я даже добавил ?height=300&width=300modal=true
как рекомендовано на сайте Thickbox, но он не работает.
Я не могу объяснить это самому себе, и это уже давно беспокоит меня.
Я надеюсь, что кто-то может мне помочь. Большое спасибо!