2013-01-22 152 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