2012-06-22 27 views
5

código jQuery:la función de éxito de ajax está imprimiendo [object Object] en lugar de texto sin formato. ¿Por qué?

function ajaxsubmit(){ 
$.ajax({ 
    url: "/update", 
    type: "POST", 
    dataType: "html" 
}).success(function(data) { 
     $('#result').html(data); 
    }); 
} 

y mi función de Java:

public static Result ajaxupdate() { 
    String done = "very good"; 
    return ok("very good").as("text/plain"); 
} 

la alerta está dando [object Object], en lugar de texto plano "very good". ¿por qué?

+0

Ábralo en chrome, coloque un punto de interrupción en la línea de alerta y pase el mouse sobre 'data'; le dirá exactamente cómo se ve el objeto internamente. – asawyer

+0

supongo que jquery está convirtiendo tu json en un objeto literal. – hvgotcodes

+0

has probado alert (data.d); – Rab

Respuesta

2

Añadir Tipo de Datos: "texto" y cambio completo() con éxito()

function ajaxsubmit(){ 
    $.ajax({ 
     url: "/update", 
     type: "POST", 
     dataType: "html" 
    }).success(function(data) { 
      $('#result').html(data); 
     }); 
    } 
+0

Gracias Cristi, lo estoy recibiendo ahora.! ¡estupendo! – doniyor

+0

Cristi, ahora estoy agregando elemento html como datos de respuesta. ¿Cómo puedo hacerlo para que cada función ajaxsubmit agregue un elemento html? ahora se agrega solo una vez porque el elemento id de div se vuelve único. ver mi edición arriba por favor. – doniyor

+1

intente .append() http://api.jquery.com/append/ –

4

que desea utilizar:

alert(JSON.stringify(data)); 

para que JavaScript se verá como:

function ajaxsubmit(){ 
$.ajax({ 
    url: "/update", 
    type: "POST", 
}).complete(function(data) { 
     alert(JSON.stringify(data)); 
    }); 
} 

Su código Java parece que está terminando su cadena en un objeto antes de que lo envía de vuelta a la cliente, JSON.stringify() le mostrará la estructura del objeto que se está devolviendo y desde allí puede determinar qué propiedad del objeto devuelto contiene su variable de retorno (Probablemente algo como data.data o data.return)

+0

wow. guay. gracias hombre, aunque está funcionando. – doniyor

+0

doniyor: No hay problema, hombre :) – Waltzy

2

La documentación de jQuery claramente responde a su pregunta. De http://api.jquery.com/jQuery.ajax/

complete(jqXHR, textStatus) 
<...> 
two arguments: The jqXHR (in jQuery 1.4.x, XMLHTTPRequest) object and a string 

Puede encontrar más información sobre jqXHR en la documentación. Si desea utilizar la cadena de respuesta, considere optar por el método .success. Es posible que deba proporcionar explícitamente .contentType

+2

contentType es para lo que envía al servidor, dataType es para lo que obtienes. –

+0

bien, muchas gracias amigo, gran información, aprendí una cosa más! – doniyor

Cuestiones relacionadas