jQueryUI和tabs';json内容呈现
我完全能够加载json返回的数据(在html页面中显示为“原样”),但是我似乎无法使原始json数据消失。我使用了以下代码:jQueryUI和tabs';json内容呈现,jquery,ajax,json,jquery-ui,Jquery,Ajax,Json,Jquery Ui,我完全能够加载json返回的数据(在html页面中显示为“原样”),但是我似乎无法使原始json数据消失。我使用了以下代码: $( "#tavole" ).tabs({ cache : false, event: "mouseover", ajaxOptions : { cache : false, dataType : 'json' }, beforeLoad: function( event, ui ) {
$( "#tavole" ).tabs({
cache : false,
event: "mouseover",
ajaxOptions : {
cache : false,
dataType : 'json'
},
beforeLoad: function( event, ui ) {
ui.jqXHR.fail(function() {
ui.panel.html( "Couldn't load this tab. We'll try to fix this as soon as possible. " + "If this wouldn't be a demo." );
});
},
load: function (event, ui ) {
renderList(JSON.parse($(ui.panel).text()));
}
});
上面的代码工作正常,renderList得到执行,但是不管发生什么情况,原始json返回都会出现在选项卡面板中。如何使其消失,以便只显示已处理的jquery对象
这是我的html:
<div id="tavole">
<ul>
<li><a href="#tavole-1"><span class="ui-icon ui-icon-locked"></span>alfa</a></li>
<li><a href="#tavole-2"><span class="ui-icon ui-icon-person"></span>beta</a></li>
<li><a href="/api/products"><span class="ui-icon ui-icon-cart"></span>gamma</a></li>
因此,换句话说,我得到了/api/products
的返回,它在选项卡的面板中显示了一次,通过renderList函数显示了第二次
如何仅查看渲染显示?为什么我还看到来自/api/products
的原始json返回
如何仅查看渲染显示?为什么我也看到了
从/api/products返回的原始json
这就是ajax初始化选项卡背后的想法,小部件将简单地显示ajax调用返回的内容
您可以让服务器呈现一个实际的HTML片段,或者让renderList返回其结果,而不是与DOM本身交互,这样您就有机会:
load: function (event, ui ) {
var $panel = $(ui.panel)
var myHtml = renderList(JSON.parse($panel.text()));
$panel.html(myHtml);
}
不过,最好是为ajax调用编写一个自定义转换器函数。现在,您正在为ajax结果使用“json”转换器,它默认为json.parse
。
请参阅转换器的文档,部分转换器
。在加载前事件处理程序(请参阅)的选项卡中,应该可以将自定义转换器函数连接到ajax调用,这将a)执行JSON解析,b)调用renderList函数。这将使选项卡的加载
事件过时
后一个版本当然是最复杂的,但(虽然我自己没有做过)我也发现它是最干净的方法。hi,tks花时间回答:)hi,tks花时间回答:)这有点出乎意料。我真的认为这样做应该容易得多。。。现在,通过使用:load:function(event,ui){var$panel=$(ui.panel)var myHtml=renderList(JSON.parse($panel.text());$panel.html(myHtml);}我仍然可以很好地格式化原始JSON和JSON对象。。。不知道如何摆脱原始json。应该有办法。我的理解是$(ui.panel)实际上并不是在处理原始数据,而是在处理ajax对象。这基本上是两个不同的实体。对不起,我上次的评论是一团糟。。。还是不太熟悉格式。也许我应该尝试自定义转换器,但是我担心我会像以前一样结束:有两个实体1)原始返回和2)jquery对象$(ui.panel)
将引用作为选项卡容器的DOM实体。这个想法是为了清除默认情况下放在那里的任何东西。如果在插入响应之前发生load
,我的建议将不起作用。我必须承认,我还没有证实这一点,而且文档在这个特定问题上有点不清楚。UweB,实际上是我的错,我没有正确地实现它。现在我修好了,它按照你的建议工作。