Ver Mensaje Individual
  #1 (permalink)  
Antiguo 09/09/2011, 13:34
Avatar de the_glz
the_glz
 
Fecha de Ingreso: febrero-2011
Ubicación: Angol
Mensajes: 9
Antigüedad: 13 años, 2 meses
Puntos: 2
Exclamación Problemas al cargar PHP con AJAX

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 original
  1. function ajaxFunction() {
  2. var xmlHttp;
  3. try {
  4. // Firefox, Opera 8.0+, Safari
  5. xmlHttp=new XMLHttpRequest();
  6. return xmlHttp;
  7. } catch (e) {
  8. // Internet Explorer
  9. try {
  10. xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
  11. return xmlHttp;
  12. } catch (e) {
  13. try {
  14. xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
  15. return xmlHttp;
  16. } catch (e) {
  17. alert("Tu navegador no soporta AJAX");
  18. return false;
  19. }}}
  20. }
  21. function cargar(_pagina,capa) {
  22. var
  23. ajax;
  24. ajax = ajaxFunction();
  25.  
  26. ajax.open("POST", _pagina, true);
  27.  
  28. ajax.setRequestHeader("Content-Type",
  29. "application/x-www-form-urlencoded");
  30. ajax.onreadystatechange = function()
  31. {
  32.  
  33. if (ajax.readyState == 4)
  34. {
  35. document.getElementById(capa).innerHTML =
  36. ajax.responseText;
  37.  
  38. }}
  39. ajax.send(null);
  40. }

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.