я думаю ваша проблема в том, что с сервера возвращается полная страница. есть 2 решения.
1) посылать запрос типа "http://blah-blah/file.php?ajax=1"
file.php:
<?php //line 0
if ($_GET['ajax'] == 1) header("Content-Type: text/xml; charset=ваша_кодировка");
...
еще небольшая кривость в onreadystatechange: на него повешена функция, которая возвращает булеву переменную. так нельзя, вы возвращаете же не значение анонимной функции а самой функции swapPhoto, короче - вот какой должна быть ваша функция для первого варианта:
function swapPhoto(href) {
var req = new XMLHttpRequest();
var rtrn = false;
req.open("GET",
"http://achacha/chacha/" +
href.split("/").pop(),
true);
req.onreadystatechange = function() {
if (req.readyState == 4 && req.status == 200) {
document.getElementById("content").innerHTML = req.responseXML.getElementById("content").innerHTML;
setupHistoryClicks();
rtrn = true;
}
}
req.send(null);
return rtrn;
}
2) просто не париться и через пхп-шник передавать только содержимое дива.
function swapPhoto(href) {
var req = new XMLHttpRequest();
var rtrn = false;
req.open("GET",
"http://achacha/chacha/" +
href.split("/").pop(),
true);
req.onreadystatechange = function() {
if (req.readyState == 4 && req.status == 200) {
document.getElementById("content").innerHTML = req.responseText;
setupHistoryClicks();
rtrn = true;
}
}
req.send(null);
return rtrn;
}