【问题标题】:Fetching data from Restful webservice with JavaScript?使用 JavaScript 从 Restful Web 服务获取数据?
【发布时间】:2013-01-22 12:47:43
【问题描述】:

我有几个问题。首先是我不知道如何使用 javascript 从 web 服务中获取数据。第二个是当我尝试以 JSON 格式而不是 XML 获取数据时,我总是会得到一个 xml。我真的是 js、Jquery 之类的新手,所以我才开始研究它。

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

网络服务:

@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. 如何使用 JSON 或/和 Jquery 或纯 js 从带有 JavaScript 的页面获取数据?有人可以为我的 js 函数实现基本案例并解释原因和内容。我的函数只返回 [object Object],[object Object]?

  2. 如何使数据为 JSON 格式,而不是 XML?

  3. 根据获取的数据构建表的最佳方法是什么?

  4. 我能否调用 webservice 类中的特定方法以及如何调用,例如 findAll()?

  5. 我正在使用 JPA 和 JAAS 身份验证。如果我使用 Web 服务并且客户端可以在不同的服务器中,如何避免缓存问题?有时数据是旧的,因为 Eclipselink 是从缓存中读取它,而不是从数据库中读取?

  6. 今天过得怎么样?

  7. 这适合同时提出多个问题吗?

萨米

【问题讨论】:

    标签: java javascript jquery json rest


    【解决方案1】:
    @GET
    @Produces({"application/xml", "application/json"})
    public String doGetAsXmlOrJson() {
        ...
    }
    

    doGetAsXmlOrJson 方法将被调用,如果任何一个媒体 类型“application/xml”和“application/json”是可以接受的。如果两者 同样可以接受,则将选择前者,因为它 首先发生。

    http://jersey.java.net/nonav/documentation/snapshot/jaxrs-resources.html找到这个

    要将 JSON 导入 JavaSCript,您可以调用

    res = JSON.parse(responseJson);
    

    res 将成为一个 JS 对象,您可以轻松地做任何事情。

    【讨论】:

    • 谢谢!这就是我的 seconf 问题的答案!
    猜你喜欢
    • 1970-01-01
    • 2018-04-24
    • 1970-01-01
    • 1970-01-01
    • 2020-02-06
    • 2013-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多