Foros del Web » Programando para Internet » Javascript » Frameworks JS »

Problemas al cargar PHP con AJAX

Estas en el tema de Problemas al cargar PHP con AJAX en el foro de Frameworks JS en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 09/09/2011, 13:34
Avatar de the_glz  
Fecha de Ingreso: febrero-2011
Ubicación: Angol
Mensajes: 9
Antigüedad: 13 años, 9 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.
  #2 (permalink)  
Antiguo 09/09/2011, 13:53
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Respuesta: Problemas al cargar PHP con AJAX

Eso es porque tu mismo debes de agregar esa cabecera, normalmente los frameworks más usados (Dojo, Prototype, JQuery, etc.) lo agregan, manualmente lo deberías hacer así:
Código Javascript:
Ver original
  1. xmlobj.setRequestHeader("X-Requested-With", "XMLHttpRequest");

Saludos.
  #3 (permalink)  
Antiguo 09/09/2011, 16:31
Avatar de the_glz  
Fecha de Ingreso: febrero-2011
Ubicación: Angol
Mensajes: 9
Antigüedad: 13 años, 9 meses
Puntos: 2
Respuesta: Problemas al cargar PHP con AJAX

Muchas gracias, pero disculpa mi ignorancia ¿En que parte debo poner ese código? Lo puse en el JS y no funciono :(

Etiquetas: ajax, carga, php
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:35.