2013-01-22 101 views
0

我遇到了一些問題。首先是我不知道如何使用JavaScript從webservice獲取數據。第二個是當我試圖以JSON格式獲取數據而不是XML時,我總是會得到一個xml。我真的是js,jquery和類似的新手,所以我開始研究它。使用JavaScript從Restful webservice獲取數據?

http://localhost:8080/UserRest/webresources/users?format=json // Even If format is JSON the result is always XML. Browser is Chrome 


<users> 
    <user> 
    <age>40</age> 
    <firstName>Mark</firstName> 
    <freeText>Free</freeText> 
    <id>1</id> 
    <lastName>Lake</lastName> 
    <weight>200</weight> 
    </user> 
    <user> 
    <age>30</age> 
    <firstName>Sam</firstName> 
    <freeText>Words</freeText> 
    <id>2</id> 
    <lastName>Grass</lastName> 
    <weight>105</weight> 
    </user> 
</users> 

如果我嘗試

http://localhost:8080/UserRest/webresources/users?format=XML 

這在Safari中,我得到了:

40MarkFree1Lake20030SamWords2Grass105

的Webservice:

@GET 
@Override 
@Produces({"application/xml", "application/json"}) 
public List<User> findAll() { 
    return super.findAll(); 
} 

頁:

 function fetchUserFunction() 
     { 
      $.getJSON("http://localhost:8080/UserRest/webresources/users?format=json", 

     function(data) { 
      $.each(data, function(key, value) { 
        alert(key + "=" + value); 
        $('#maindiv').append('<li id="' + key.toString() + '">' + value.toString() + '</li>'); 
       }); 
     }); 

     } 
    </script> 
</head> 
    <body> 
     <h1>Users</h1> 
     <a href="http://localhost:8080/UserRest/webresources/users"> Test restful service</a> 
     <button onclick="fetchUserFunction()">Fetch Users</button> 
     <div id="maindiv"></div> 
    </body> 
</html> 

問題:

  1. 如何提取使用JavaScript使用JSON或/和jQuery或只是純粹的JS來自網頁的數據?有人可以實現基本案例我的js函數,並解釋爲什麼和什麼。我的函數只返回[object Object],[object Object]?

  2. 如何使數據成爲JSON格式而不是XML?

  3. 從獲取的數據構建表的最佳方法是什麼?

  4. 我可以在webservice類中調用特定的metod以及findAll()嗎?

  5. 我正在使用JPA和JAAS身份驗證。如何避免在我使用Web服務和客戶端的情況下緩存問題可以在不同的服務器上?有時數據是舊的,因爲Eclipselink正在從緩存中讀取數據,而不是從數據庫讀取數據?

  6. 今天好嗎?

  7. 這是否適合在一箇中提出許多問題?

薩米

回答

1
@GET 
@Produces({"application/xml", "application/json"}) 
public String doGetAsXmlOrJson() { 
    ... 
} 

的doGetAsXmlOrJson方法會如果任一媒體的 類型的 「application/XML」 和 「應用程序/ JSON」 是可以接受的調用。如果兩個 同樣可以接受,那麼前者將被選中,因爲它首先發生 。

發現這個在http://jersey.java.net/nonav/documentation/snapshot/jaxrs-resources.html

得到JSON轉換成JavaScript,你可以叫

res = JSON.parse(responseJson); 

資源將成爲一個JS對象,你可以輕鬆地做任何事情。

+0

謝謝!這是我seconf問題的答案! – Sami