首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在UI中使用来自WebService的数据,使用jquery

在UI中使用来自WebService的数据,使用jquery
EN

Stack Overflow用户
提问于 2013-11-20 14:24:10
回答 1查看 91关注 0票数 0

我有一个java web服务,它向我返回一个json对象列表。在我的UI中,我想使用这些数据。这就是我要做的。

代码语言:javascript
运行
复制
function loadList(){
  $.get("myservice",function(data){
  alert(data.list[2].key1);
}

我的html中有一个元素,为此设置了onmouseover事件。如果不是这样的话,我会希望这些数据被使用。现在我还不确定什么时候会发生这种情况,而且我也不知道如何使用我从web服务获得的这个data来在这个函数之外使用。我想将数据复制到另一个临时变量,但我的json结果有时会很大。

此外,当我使用mouseover等游戏时,我将使用D3JS进行数据元素操作。

那么,有没有一种方法可以使用我从web服务获得的数据,在这个get方法之外的某个地方呢?谢谢。

EN

Stack Overflow用户

回答已采纳

发布于 2013-11-20 14:31:49

如果它只在元素上,那么使用" data ()“方法将数据存储在元素上:

代码语言:javascript
运行
复制
function loadList(){
    $.get("myservice",function(data){
        $('.myElement').data('svc-data',data);
    }
}

然后,当您需要它在您的鼠标,只要检索它使用相同的数据方法:

代码语言:javascript
运行
复制
$('.myelement').on('mouseover',function() {
    var data = $(this).data('svc-data');
    alert(data.list[2].key1);
});

关于数据的文件:http://api.jquery.com/category/miscellaneous/data-storage/

更新:进一步澄清

‘s is data’是给出元素数据的“键”。data方法存储数据(对象、json、字符串等.)通过使用引用键将其与指定的元素相关联。因此,'svc- data‘是我所称的引用,因为它是来自您的服务的数据(svc = service to me)。如果您保存JSON数据(即: list.sub.item),则在检索JSON数据时仍然能够以JSON的形式访问它,因为jQuery存储的对象类型相同--不使用序列化。

第二部分展示了如何检索与元素关联的数据。当您使用$('selector').data('key') (见上文)检索数据时,数据返回到您保存的类型,并且可以这样使用。在JSON的例子中,您检索一个JSON对象,并且仍然可以像我试图用警报显示的那样使用它(即: list.sub.item)。

关键是数据与您的选择器指定的元素相关联,因此您只能通过首先引用要从中检索数据的元素来检索数据。同时,您可以在其中包含5个带有“svc-data”的元素,而不必担心冲突。

Update2:在小提琴里的例子让你明白我的意思:http://jsfiddle.net/zYdRH/

Update3:新增的一个示例是实例变量。http://jsfiddle.net/zYdRH/3/

注意所有东西是如何包装在一个匿名的、自动执行的函数中的。这是将变量和函数排除在全局范围之外的一个很好的方法。这意味着此函数中的每一项只能由此函数访问。我不能从另一个元素调用这些函数,也不能访问变量。因此,您还可以将JSON数据存储在此范围内,以便从该作用域中的任何元素中访问。我添加的最新示例有一个名为instanced的特定示例,但是所有json vars都可以以相同的方式使用--这对于一个示例来说就更明显了。但是,请注意实例是一个没有存储到任何东西的JSON对象。对范围来说是全球性的。双击一个按钮,可以看到每个按钮都显示了类关联的单词。

如果您的JSON数据对每个按钮都是唯一的,那么data()方法就是方法。但是,如果每个元素的JSON都是相同的,但是每个元素都有自己需要的部分数据,那么实例var就是最好的选择。

票数 1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20098487

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档