Por lo visto la forma en que intento llamar a una imagen es cualquier cosa. Asi que directamente implemente una pagina llamada getphoto.php que recive el nombre de la foto por POST y devuelve el codigo HTML para postear la imagen. Pero el codigo sigue sin funcionar, yo ya no se por que sera, lo revise de arriba a abajo y no encuentro el error. Cuando hago click en "derecha" o "izquierda" se deberia llamar mediante AJAX a la pagina galeriajax.php, pero en vez de eso, se queda como si nada, como si no hubiera echo click. Pongo todos los codigos como los tengo ahora, a ver si alguien encuentra el error:
galeriajax.htm:
Código HTML:
<html>
<head>
<style type="text/css">
html, body {
width: 100%;
padding: 0;
margin: 0;
}
#izquierda {
float: left;
width: 10%;
}
#derecha {
float: right;
width: 10%;
}
#galeria {
float: left;
width: 80%;
}
#fotos {
margin: 0 auto;
width: 65%;
}
#mostrar {
width: 50%;
clear: both;
margin: 0 auto;
}
</style>
<script src="galeriajax.js" type="text/javascript"></script>
<script>
function Move(movimiento)
{
var what = "showGallery(req.responseText)";
var url = "galeriajax.php";
llamar("mover="+movimiento);
}
function verFoto(foto) {
var what = "showPhoto(req.responseText)";
var url = "getphoto.php";
llamar("imagen="+foto);
}
function showGallery(galeria)
{
if(galeria != "No hay foto")
{
var resultado = document.getElementById("fotos");
resultado.innerHTML = galeria;
}
}
function showPhoto(foto) {
var resultado = document.getElementById("mostrar");
resultado.innerHTML = foto;
}
</script>
</head>
<body>
<a id="izquierda" href="javascript:Move('izquierda');">Izquierda</a>
<div id="galeria"><div id="fotos"></div></div>
<a id="derecha" href="javascript:Move('derecha');">Derecha</a>
<div id="mostrar"></div>
</body>
</html>
galeriajax.js:
Código:
function llamar(info)
{
// branch for native XMLHttpRequest object
if (window.XMLHttpRequest) {
req = new XMLHttpRequest();
req.onreadystatechange = processReq;
req.open('POST', url, true);
req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
req.send(info);
// branch for IE/Windows ActiveX version
} else if (window.ActiveXObject) {
req = new ActiveXObject('Microsoft.XMLHTTP')
if (req) {
req.onreadystatechange = processReq;
req.open('POST', url, true);
req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
req.send(info);
}
}
}
function processReq() {
// only if req shows 'loaded'
if (req.readyState == 4) {
// only if 'OK'
if (req.status == 200) {
eval(what);
} else {
alert('There was a problem retrieving the XML data: ' +
req.responseText);
}
}
}
galeriajax.php:
Código PHP:
<?php
session_start();
$db = mysql_connect("localhost", "root");
mysql_select_db("fotos", $db);
if (!isset($_SESSION['primerVisita'])) {
$_SESSION['primerVisita'] = "visitada";
$_SESSION['primerFoto'] = 1;
$consulta = mysql_query("select * from fotos order by id desc");
$_SESSION['ultima'] = mysql_num_rows($consulta);
$id = 1;
$_SESSION['fotoID'] = array();
$_SESSION['fotoURL'] = array();
while ($foto = mysql_fetch_assoc($consulta)) {
$_SESSION['fotoID'][$id] = $foto['id'];
$_SESSION['fotoURL'][$id] = $foto['url'];
$id++;
}
}
if (isset($_POST['mover'])) {
if ($_POST['mover'] == "izquierda") {
if ($_SESSION['primerFoto'] == 1)
$_SESSION['primerFoto'] = $_SESSION['ultima'];
else
$_SESSION['primerFoto']--;
}
else if ($_POST['mover'] == "derecha") {
if ($_SESSION['primerFoto'] == $_SESSION['ultima'])
$_SESSION['primerFoto'] = 1;
else
$_SESSION['primerFoto']++;
}
}
$id = $_SESSION['primerFoto'];
for ($cont = 1; $cont <= 4; $cont++) {
echo "<a href=\"javascript:verFoto('".$_SESSION['fotoURL'][$id]."')\"><img src=\"".$_SESSION['fotoURL'][$id]."\" /></a>";
if ($id == $_SESSION['ultima'])
$id = 1;
else
$id++;
}
?>
getphoto.php:
Código PHP:
<?php
$imagen = $_POST['imagen'];
echo "<img src=\"".$imagen."\" />";
?>
Soy totalmente nuevo en AJAX, pero me base en un codigo que encontre en internet. Al principio funcionaba, pero cuando le agregue mas cosas dejo de funcionar. Lo revise completamente y no encuentro que es lo que hace que no funcione. Seguro es un error tonto, pero la verdad no lo veo... si alguien sabe...
Saludos