2011-04-27 28 views
12

Tengo una página HTML que deseo llenar con Ajax. Copié el código de otras páginas (que están todas en PHP, y no estoy seguro de que eso importe) y está devolviendo [object XMLDocument]. En las otras páginas (las de PHP) obtengo lo que imprimí en la rutina.jQuery llamada Ajax que devuelve '[object XMLDocument]'

Esto es lo que tengo:

index.html -

<html> ... </html> 
<script> 
$(document).ready(function() { 
getSplashHelpVideos(); 
}); 
</script> 

En el archivo javascript -

function getSplashHelpVideos() { 
$.ajax({ 
    url: "include/get_help_videos.php", 
    type: "POST", 
    success: function(data) { 
    alert(data); 
    } 
}); 
return; 
} 

En get_help_videos.php (obviamente, esto es sólo temporal código para tratar de averiguar cómo funciona esto) -

<?php 
session_start(); 
echo 'OK'; 
return; 
?> 

Así que estaba esperando (y quiero) que aparezca una alerta diciendo 'OK', que es lo que haría en mis otras rutinas, pero aparece en su lugar [object XMLDocument].

¿Estoy haciendo algo mal? ¿O es mejor vivir con eso y analizar el XMLDocument?

+0

Por qué no forzar tipo? '{dataType: 'text'}' – mattsven

+0

¿en qué navegador se encuentra? – Neal

+0

Gracias por las respuestas. Intenté forzar el tipo, y no hizo ninguna diferencia. Estoy en Firefox. – Sharon

Respuesta

21

es necesario incluir el parámetro de tipo de datos en la que AJAX llamada para indicar que simplemente está esperando una respuesta de texto:

function getSplashHelpVideos() { 
    $.ajax({ 
     url: "include/get_help_videos.php", 
     type: "POST", 
     dataType: "text", 
     success: function(data) { 
      alert(data); 
     } 
    }); 
    return; 
} 
+0

Gracias, pero eso no ha hecho ninguna diferencia. Sigo recibiendo el contenido de get_help_videos.php. – Sharon

+1

Por 'contenidos de x.php' ¿quiere decir que obtiene el código PHP real de la página devuelta? Si ese es el caso, su servidor no está interpretando correctamente PHP y es un problema de configuración.Esto también explicaría por qué la función ajax de jQuery determinó automáticamente que el tipo de respuesta era XML. –

1

puedes probar el código de abajo. Yo sólo he probado en Firefox 15.0.1 y funciona bien:

$.post("include/get_help_videos.php", function(data) 
{ 
    alert(data); 
}, "text"); 
0

intenta establecer el tipo de contenido de la respuesta a text/html primero y luego dicen echo "ok" como esto :

header('Content-type: text/html'); 

tengo el mismo problema here y resuelto de esta manera solamente, ya que cuando no se especifica el tipo de contenido de la respuesta de todos los navegadores trata a la respuesta en un formato diferente como, y así.

-1

Solo tiene que indicar el tipo de datos (que le indica al navegador que espera una respuesta en el formato mencionado solamente, por ejemplo, el formato "texto"). En este caso probé esto en firefox y mozilla.y funciona ... :)

Compruebe la respuesta en firefox/Mozilla - también puede verificar la respuesta siguiente después de la solicitud de ajax ... siga los pasos a continuación-- presione F12 en firefox/mozilla -> vaya a la pestaña "Consola" -> vaya a la subficha "Respuesta". :)

function GetEmployeeListWS_REST() {   
      jQuery.ajax({ 
      url: "http://localhost:8080/RESTDemo/rest/hello/helloXML", 
      async: false, 
      type: 'GET', 
      contentType: "text/xml; charset=utf-8",     
      dataType: "text", 
      crossDomain: true, 
      //data: packet, 
      error: function (xhr, textStatus, errorThrown) { alert(xhr + ' ' + textStatus + '' + errorThrown); }, 
      success: function (response, status, xmlData) { 

       $("#EmployeeDetailsWs").text(response);      
      } 
     }); 

    } // ends : fun() 
0

cambiar el tipo de respuesta a html/text en el archivo get_help_videos.php

Cuestiones relacionadas