Estoy trabajando en un sitio para ver señales on-line de TV, y quiero que cuando un usuario haga click en un enlace de un canal (supongamos, CNN) cargue el stream en el DIV definido mediante AJAX. Esto lo logre, pero tengo un grave problema en el archivo PHP ya que no detecta que es una petición AJAX y la página devuelve todo el contenido.
Lo que quiero lograr es que si el usuario quiere ver un canal, se cargue mediante AJAX y ofrezca un enlace directo de dicho canal (mediante un input, eso ya está logrado). PHP diferenciaría si es o no una carga AJAX, y dependiendo de ello mostrará el contenido simple (cargado mediante AJAX) o el contenido completo (si es mediante enlace directo cargaría etiquetas HTML, BODY y esas cosas).
Me explico: este es el código AJAX que utilizo (y funciona). Lo tengo en JS y lo cargo en el HEADER:
Código Javascript:
Ver original
function ajaxFunction() { var xmlHttp; try { // Firefox, Opera 8.0+, Safari xmlHttp=new XMLHttpRequest(); return xmlHttp; } catch (e) { // Internet Explorer try { xmlHttp=new ActiveXObject("Msxml2.XMLHTTP"); return xmlHttp; } catch (e) { try { xmlHttp=new ActiveXObject("Microsoft.XMLHTTP"); return xmlHttp; } catch (e) { alert("Tu navegador no soporta AJAX"); return false; }}} } function cargar(_pagina,capa) { var ajax; ajax = ajaxFunction(); ajax.open("POST", _pagina, true); ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); ajax.onreadystatechange = function() { if (ajax.readyState == 4) { document.getElementById(capa).innerHTML = ajax.responseText; }} ajax.send(null); }
Para que cargue el contenido utilizo:
Código:
Y esta es la parte en que falla, el código PHP que utilizo para ver si es o no una petición AJAX:<a href="javascript:cargar('dominio.com/signal/cnn.php', 'video')">CNN</a><div id="video"></div>
Código PHP:
<?php if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') { ?>
Contenido cargado mediante AJAX
<?php } else { ?>
Contenido cargado directamente, sin AJAX
<?php } ?>
Si no me explique bien, y si esta permitido, les dejo un enlace del problema, para que lo puedan entender.