Buenas.
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 originalfunction 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:
<a href="javascript:cargar('dominio.com/signal/cnn.php', 'video')">CNN</a><div id="video"></div>
Y esta es la parte en que falla, el código PHP que utilizo para ver si es o no una petición AJAX:
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 } ?>
El problema es que siempre me muestra "Contenido cargado directamente, sin AJAX". He probado cambiando "xmlhttprequest" por "XMLHttpRequest" para ver si era un problema de caracteres, pero nada, sigue sin diferenciar :(
Si no me explique bien, y si esta permitido, les dejo un enlace del problema, para que lo puedan entender.