2012-06-22 50 views
5

jQuery代碼:ajax成功功能是打印[object Object]而不是純文本。爲什麼?

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

和我的Java功能:

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

警報是給[object Object],而不是純文本"very good"。爲什麼?

+0

用chrome打開它,在警戒線上放置一個斷點,然後將鼠標懸停在「data」上,它會精確地告訴您內部對象是什麼樣子。 – asawyer

+0

即時猜測jquery正在將您的json轉換爲對象字面值。 – hvgotcodes

+0

你有沒有試過alert(data.d); – Rab

回答

2

添加數據類型: 「文本」,併成功改變完成()()

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

感謝克里斯蒂,我現在明白了。大! – doniyor

+0

克里斯蒂,現在我正在追加HTML元素作爲響應數據。我怎樣才能讓每個ajaxsubmit函數附加一個html元素。現在它只追加一次,因爲div元素的id變得唯一。請參閱我上面的編輯。 – doniyor

+1

嘗試.append()http://api.jquery.com/append/ –

4

要使用:

alert(JSON.stringify(data)); 

,所以你的JavaScript將是這樣的:

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

你的Java代碼看起來是包裝你的字符串轉換成一個對象發送回給前客戶端,JSON.stringify()將顯示正在返回的對象的結構,並從那裏可以計算出返回對象的哪些屬性包含返回變量(可能類似於data.data或data.return)

+0

哇。涼。感謝的人,它雖然工作。 – doniyor

+0

doniyor:沒問題的人:) – Waltzy

2

jQuery的文檔清晰地回答你的問題。來自http://api.jquery.com/jQuery.ajax/

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

您可以在文檔中找到更多關於jqXHR的信息。 如果您想使用響應字符串,請考慮選擇.success方法。您可能必須明確提供.contentType

+2

contentType是你發送給服務器的,dataType是你得到的。 –

+0

好吧,非常感謝friendzis,很棒的信息,瞭解了一件事! – doniyor

相關問題