Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用dojo使用Web服务_Javascript_Json_Rest_Dojo - Fatal编程技术网

Javascript 使用dojo使用Web服务

Javascript 使用dojo使用Web服务,javascript,json,rest,dojo,Javascript,Json,Rest,Dojo,我想使用dojo使用Restful Web服务。 webservice的结果在浏览器上返回,但是当我尝试使用xhr获取结果时,我总是得到一个空值,因此请帮助我了解dojo dojo.query("li").onclick(function(){ var xhrArgs = { url: "http://192.168.1.65:9080/RAD8JAX-RSWeb/jaxrs/customers", handleA

我想使用dojo使用Restful Web服务。 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 ...");
});

当事件发生时,将显示警报,并且我得到空值。Dojo使用“存储”从服务器获取数据。这些存储会延迟地取出数据,因此只有在您第一次请求数据时才会这样做。每次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');
  }
});
只有在第一次向服务器发送请求时。所有其他请求将从存储缓存中提供。如果要刷新缓存,需要“关闭”存储。下次对存储调用提取时,将向服务器发出新请求。您可以按如下方式关闭它:

store.close();
存储旨在以数据技术透明的方式为服务器数据提供服务。因此,无论您提供json、xml还是csv,这都无关紧要:它们都将加载到存储中,并以相同的方式提供给您。你只需要知道两件事:

数据需要以特定的格式提供:有关格式,请参阅 在onItem和onComplete方法中获得的所有项只能通过dojo Read API使用,您可以在此处阅读: 有许多类型的存储,ItemFileReadStore只是一个例子


希望这能有所帮助

实际上,dojo.data API比1.6版以来的新版本限制性更强

对于使用restful Web服务,我的建议是使用商店。不需要特定的Json格式


这是一个很好的JsonRest用法示例:

您是从上的HTML页面发出请求的吗?非常感谢您的帮助我非常喜欢您的帮助我将尝试此方法我想向您展示调用Web服务时生成的json[{lastName:Ziosi,title:Mr,firstName:Lara,ssn:888-88-8888}]我如何处理此问题,这是一个jsonArray:/数组未命名。这样使用它有问题吗?如果你阅读,你会发现存储需要另一个json结构。您需要将数组包装成如下结构:{identifier:id,items:[{id:1…此项的其他信息…},{id:2,…此项的其他信息…},等等]}虽然与问题相关,但这并不是对发问者提出的特定问题的回答。那么,假设我们没有REST完整服务呢?JSON是动态的,我们无法从服务器进行更改,但仍然希望过滤数据。我们怎样才能做到呢?啊,每天都学些新东西。。。我不知道JsonRest商店的事。