使用dojo消费webservice

时间:2012-02-27 17:06:49

标签: javascript json rest dojo

我想使用dojo消费Restful webservice。 webservice的结果是在浏览器上返回的,但是当我尝试使用xhr得到结果时,我总是得到一个空值,所以请帮助我在dojo中新来...

dojo.query("li").onclick(function(){
        var xhrArgs = {
                url: "http://192.168.1.65:9080/RAD8JAX-RSWeb/jaxrs/customers",

                handleAs: "json",
                headers: { "Content-Type": "application/json"},
                load: function(data) {
                alert("ok");
                    console.log(data);
                },
                error: function(error) {
                    console.log(error);
                }
            };
             dojo.xhrGet(xhrArgs);
 console.log("message sent ...");
});

当事件发生时,警报显示,我得到“null”

2 个答案:

答案 0 :(得分:3)

实际上,dojo.data API比新dojo.store APIs(自1.6以来可用)更具限制性。

为了使用宁静的网络服务,我的建议是使用dojo.store.JsonRest商店。无需特定的Json格式。

以下是JsonRest用法的一个很好的例子:http://dojotoolkit.org/documentation/tutorials/1.7/store_driven_tree/

答案 1 :(得分:2)

Dojo使用'stores'从服务器获取数据。这些商店外出并懒惰地获取数据,所以只有当你第一次请求它时。每当您的JavaScript代码需要数据时,它都可以询问商店,如果它已经提取了它,它将返回它,否则它将出去并获取它。

由于商店的异步性质,您需要在每次需要数据时进行异步调用。

在您的情况下,您可以执行以下操作:

// Create the store for later use
var store = new dojo.data.ItemFileReadStore({
  contentType: 'application/json'
  ,clearOnClose: true
  ,urlPreventCache: true
  ,url: "http://192.168.1.65:9080/RAD8JAX-RSWeb/jaxrs/customers"
});

每次你需要从商店获取数据时:

store.fetch({
  onItem: function(item, request) {
    alert('I fire after each returned json item')
  }
  ,onComplete: function(items, findResult) {
    alert('I fire when the data has loaded completely.');
  }
  ,onError: function(error, request) {
    alert('I fire when an error occurs');
  }
});

只有第一次将请求发送到服务器。所有其他请求将从商店缓存中提供。如果要刷新缓存,则需要“关闭”商店。下次在商店中调用fetch将导致向服务器发出新请求。您可以这样关闭它:

store.close();

商店旨在以数据技术透明的方式提供服务器数据。所以你服务json,xml或csv并不重要:它将全部加载到商店并以同样的方式提供给你。你只需要知道两件事:

  1. 需要以特定格式投放数据:有关格式
  2. ,请参阅http://livedocs.dojotoolkit.org/dojo/data/ItemFileReadStore#item-structure-examples
  3. 您在onItem和onComplete方法中获得的所有项目只能通过dojo Read API使用,您可以在此处阅读:http://dojotoolkit.org/api/1.7/dojo/data/api/Read
  4. 有许多类型的商店,ItemFileReadStore只是一个例子。

    希望这有帮助