2012-06-22 18 views
5

codice jQuery:ajax success function sta stampando [oggetto Object] al posto del testo normale. Perché?

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

e la mia funzione di Java:

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

l'avviso sta dando [object Object], invece di testo normale "very good". perché?

+0

Aprilo in chrome, inserisci un punto di interruzione nella riga di avviso e il mouse su 'data' ti dirà esattamente come appare l'oggetto internamente. – asawyer

+0

L'ipotesi di jquery sta convertendo il tuo json in un oggetto letterale. – hvgotcodes

+0

hai provato l'avviso (data.d); – Rab

risposta

2

Aggiungi tipo di dati: "testo" e cambio completo() con un successo()

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

Grazie Cristi, lo sto facendo ora! grande! – doniyor

+0

Cristi, ora sto aggiungendo l'elemento html come dati di risposta. come posso fare in modo che ogni funzione ajaxsubmit accoda un elemento html. ora viene aggiunto solo una volta perché l'id dell'elemento div diventa univoco. vedere la mia modifica sopra per favore. – doniyor

+1

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

4

che si desidera utilizzare:

alert(JSON.stringify(data)); 

in modo da JavaScript sarà simile:

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

Il codice Java sembra che sta per concludere la stringa in un oggetto prima di inviare nuovamente al client, JSON.stringify() ti mostrerà la struttura dell'oggetto che viene restituito e da lì puoi calcolare quale proprietà dell'oggetto restituito contiene la variabile return (Probabilmente qualcosa come data.data o data.return)

+0

wow. freddo. grazie amico, funziona comunque. – doniyor

+0

doniyor: Nessun problema uomo :) – Waltzy

2

La documentazione jQuery risponde chiaramente alla tua domanda. Da http://api.jquery.com/jQuery.ajax/

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

È possibile trovare maggiori informazioni su jqXHR nella documentazione. Se si desidera utilizzare la stringa di risposta, considerare l'opzione per il metodo .success. Potresti dover fornire esplicitamente .contentType

+2

contentType è per ciò che si invia al server, dataType è per ciò che si ottiene. –

+0

ok, molte grazie friendzis, ottima informazione, ho imparato un'altra cosa! – doniyor

Problemi correlati