Windows8移动应用程序-获取在线数据和显示javascript

Windows8移动应用程序-获取在线数据和显示javascript,javascript,windows-8,microsoft-metro,windows-store-apps,winjs,Javascript,Windows 8,Microsoft Metro,Windows Store Apps,Winjs,我是Windows8移动应用程序开发新手 我正在用Javascript/HTML5定制一个“网格应用程序”,并试图修改data.js以获取数据并填充“SampleDate”数组 从web提要获取数据已经完成,但问题是,由于请求是异步的,所以执行过程不会等待响应 数组始终为空,但当我尝试将数组数据记录到控制台时,它会在获取后正确记录 请给我一个解决方案,以便我可以填充和查看获取的数据 这就是我如何更改默认的generateSampleData()方法 WinJS.xhr({ url: "http:

我是Windows8移动应用程序开发新手

我正在用Javascript/HTML5定制一个“网格应用程序”,并试图修改data.js以获取数据并填充“SampleDate”数组

从web提要获取数据已经完成,但问题是,由于请求是异步的,所以执行过程不会等待响应

数组始终为空,但当我尝试将数组数据记录到控制台时,它会在获取后正确记录

请给我一个解决方案,以便我可以填充和查看获取的数据

这就是我如何更改默认的
generateSampleData()
方法

WinJS.xhr({ url: "http://www.yamu.lk/feed/" })
       .done(function complete(result) {

           console.log(result.responseXML);
           var items = result.responseXML.querySelectorAll("item");
           for (var n = 0; n < items.length; n++) {
               sampleItems[n] = { group: sampleGroups[0], title: items[n].querySelector("title").textContent, subtitle: "Item Subtitle: 1", description: items[n].querySelector("description").textContent, content: itemContent, backgroundImage: lightGray };
               console.log(items[n].querySelector("title").textContent);

           }


           },
           function error(error) {

           },
           function progress(result) {

           });

        return sampleItems;
WinJS.xhr({url:http://www.yamu.lk/feed/" })
.完成(功能完成(结果){
console.log(result.responseXML);
var items=result.responseXML.queryselectoral(“项”);
对于(变量n=0;n
1)声明一个全局变量,如IsWaitingForData

2) 在发送请求之前,将值设置为True

3) 当数据redy将变量设置为false时,在done函数中

4) 使用数组

您应该阅读JavaScript中的承诺:

下面是一篇关于异步编程的文章:

下面是一篇关于承诺的好文章:


您的问题源于这样一个事实:ListView没有直接绑定到sampleItems数组,而是绑定到一个绑定列表,该列表将sampleItems推送到它上面。查看data.js的第12行:

 generateSampleData().forEach(function (item) {
    list.push(item);
});
您要做的是等待将数据推入绑定列表,直到从web服务检索到数据为止。一种方法是让generateSampleData()函数返回WinJS.xhr承诺,而不是sampleItems数组。因此generateSampleData()变成:

第12行变成:

generateSampleData().done(function complete(result) {
       console.log(result.responseXML);
       var items = result.responseXML.querySelectorAll("item");
       for (var n = 0; n < items.length; n++) {
           list.push({ group: sampleGroups[0], title: items[n].querySelector("title").textContent, subtitle: "Item Subtitle: 1", description: items[n].querySelector("description").textContent, content: itemContent, backgroundImage: lightGray });
           console.log(items[n].querySelector("title").textContent);
       }});
generateSampleData().done(函数完成(结果)){
console.log(result.responseXML);
var items=result.responseXML.queryselectoral(“项”);
对于(变量n=0;n
或者类似的东西


请务必查看如何工作以获取更多信息。

如何访问响应数据?我需要读取该URL中的xml数据。请帮忙
return WinJS.xhr({ url: "http://www.yamu.lk/feed/" });
generateSampleData().done(function complete(result) {
       console.log(result.responseXML);
       var items = result.responseXML.querySelectorAll("item");
       for (var n = 0; n < items.length; n++) {
           list.push({ group: sampleGroups[0], title: items[n].querySelector("title").textContent, subtitle: "Item Subtitle: 1", description: items[n].querySelector("description").textContent, content: itemContent, backgroundImage: lightGray });
           console.log(items[n].querySelector("title").textContent);
       }});