2012-06-04 45 views
3

我有三个3(jquery的)选项卡:如何处理每个jquery选项卡的不同json数据?

  • 概述
  • 定价
  • 目的地信息

每个选项卡都具有完全不同的数据。我可以在href中指定一个URL来进行AJAX调用。但是,如何处理为每个选项卡收到的数据(以便我可以根据上下文渲染它们)?

我应该使用load事件来处理数据吗?如果是这样,我怎样才能得到在加载事件返回的json数据的句柄?

+0

我用自带的WebKit浏览器的检查一些(主要是与Chrome浏览器,您必须启用它专门在Safari)来调试我的JavaScript,看看究竟什么是一个变量。实现负载处理程序,在函数中放置一个断点,然后使用检查器告诉我变量中存在什么(它会显示它的所有参数,event.somethings等)。 –

+0

@FireLizzard是的,这就是我自己发展的方式。我是后端开发人员,因此很难弄清楚前端细节,但检查员为我节省了一天的时间。至于加载函数,我不知道如何获得给定选项卡返回的json数据的句柄。我知道的唯一方法是在'success'事件处理程序中处理返回的json数据。但是我没有那里的选定标签的引用。 – brainydexter

回答

2

我有jQuery UI的经验不多,但我知道你可以从一个AJAX请求的JSON(here)获取数据:

$.ajax({ 
    url: "http://example.com/page.html", 
    dataType: "json", 
}).done(function (data) { 
    // Do some stuff with the data 
}); 

或者你可以使用jQuery.getJSON。 然后总是有jQuery.parseJSON

编辑:至于我能弄清楚,这是最好的,你会得到:

$(window).load(function(){ 
    $(function() { 
     $("#tabs").tabs({ 
      ajaxOptions: { 
       error: function(xhr, status, index, anchor) { 
        $(anchor.hash).html(
         "Couldn't load this tab. We'll try to fix this as soon as possible. " + 
         "If this wouldn't be a demo."); 
       }, 
       success: function(jsonObject, status) { 
         // Code 
       }, 
       dataType: "json" 
      } 
     }); 
    }); 
}); 

这样,JSON需要包括你一起工作的标签。这会导致一个相当不雅的解决方案,因为你将不得不打开从json返回的tab值。看起来好像Tab API并不适合任何人自己处理显示过程。我看到其他三个选项:自己重做Tab API;破解API来做你的事情;或不喜欢get_tab_contents.php?tabid=someid&json=somepath

+0

当然可以使用AJAX/JSON加载数据。我关心的是处理返回的数据。如果我指定的ajaxOptions成功的功能,那么我怎么知道是谁发送的请求,并且标签更新 – brainydexter

+0

你能,或者这将是不切实际的,实现为每个标签不同的功能?此外,据我所知,'ajax.done(FUNC)'有异曲同工之妙如''ajaxOptions' success'。 –

+0

@Firelizzard由于jQuery UI的选项卡的功能,它是不可能给每一个它自己的成功方法选项卡。但是,(@brainydexter),请尝试控制台。记录(this)在成功处理程序中,它可能会有一些信息可以使用,例如请求数据的url。 –

1

也许我在阅读这个错误,但是......你可以在你的AJAX响应中使用带有某种标记的开关。

/* 
    Your AJAX response could be something like: 
    data.type = destination, overview, pricing etc 
    data.content = The actual content you are expecting 
*/ 
var data=/* Your ajax call */ 
switch(data.type) 
{ 
case 'destination': 
     /* Handle the rest of the data object*/ 
     $('div').html(data.content); 
     break; 
case 'overview': 
     break; 
case 'pricing': 
     break; 
} 
+0

我也在探索数据类型被返回的思路,但我相信必须有一个更清晰的方式来处理这个问题。另外,你认为我可以以任何方式利用'load'事件吗? – brainydexter

相关问题