Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/82.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
在UI中使用WebService中的数据,使用jquery_Jquery_Json_Web Services_User Interface - Fatal编程技术网

在UI中使用WebService中的数据,使用jquery

在UI中使用WebService中的数据,使用jquery,jquery,json,web-services,user-interface,Jquery,Json,Web Services,User Interface,我有一个JavaWeb服务,它向我返回一个json对象列表。在我的UI中,我想使用这些数据。这就是我正在做的 function loadList(){ $.get("myservice",function(data){ alert(data.list[2].key1); } 我的html中有一个元素,为此我设置了一些onmouseover事件。要不是这样,我希望这些数据能被使用。现在,因为我甚至不确定什么时候会发生这种情况,而且我不知道如何使用我从web服务获得的数据,在这个函数之外使

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

function loadList(){
  $.get("myservice",function(data){
  alert(data.list[2].key1);
}
我的html中有一个元素,为此我设置了一些onmouseover事件。要不是这样,我希望这些数据能被使用。现在,因为我甚至不确定什么时候会发生这种情况,而且我不知道如何使用我从web服务获得的
数据
,在这个函数之外使用。我曾想过将数据复制到另一个临时变量,但我的json结果有时会很大

另外,当我在玩鼠标盖等时,我将使用D3JS进行数据元素操作


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

如果只在元素上,请使用“data()”方法将数据存储在元素上:

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

function loadList(){
    $.get("myservice",function(data){
        $('.myElement').data('svc-data',data);
    }
}
$('.myelement').on('mouseover',function() {
    var data = $(this).data('svc-data');
    alert(data.list[2].key1);
});
关于数据的文件:

更新:进一步澄清

“svc数据”是您在元素上提供数据的“键”。data方法通过将数据(对象、json、字符串等)与使用键指定的元素关联以进行引用来存储数据。所以,“svc data”就是我所说的那个引用,因为它是来自您的服务的数据(svc=service to me)。如果保存JSON数据(即:list.sub.item),在检索它时仍然可以将其作为JSON进行访问,因为jQuery将提供的对象存储为相同的类型—不使用序列化

第二部分介绍如何检索与元素关联的数据。当您使用$('selector').data('key')(参见上文)检索时,数据将作为您保存的类型返回,并且可以作为您保存的类型使用。在JSON的情况下,您检索一个JSON对象,并且仍然可以使用它(即:list.sub.item),正如我试图用警报显示的那样

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

更新2:小提琴中的示例,让您了解我的意思:

Update3:又添加了一个实例变量

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


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

什么是“svc数据”?另外,我将得到一个Json对象列表。那么这东西是怎么工作的呢;您是否将整个数据列表与该特定元素关联?实际上,我将有多个元素,多个元素将有相应的多个数据,我得到的是json。因此,稍后,如果我转到这些元素中的任何一个,我希望从JSON列表中访问属于该特定元素的数据。通过这个方法,我将把这些数据关联到每个元素,对吗?或者可能。我可以将它们组合到其他元素下,然后将数据应用到该特定元素。。或者事实上,我可以有一些不相关的元素,隐藏的元素,它们与这些元素中的任何一个都没有关系,只是为了我可以将我的数据附加到某个元素上。我可以使用这个不相关的元素,对吗?我刚刚更新了一个更完整的示例,展示了您可能使用的不同方法,并添加了更好的描述。让我知道这是否有帮助。另外,您可以看到我使用的是预定义的JSON,但是如果您是从$.get()调用,那么您可以在get之外定义var,如果需要使用实例var方法,可以在回调函数内部设置值。另外一个想法是,如果你有相同的json,但是每个元素只需要一个片段,那么你可以获取每个元素的数据片段,并将该片段存储到数据中的每个元素,以防你不需要json的其余部分。