2013-07-12 4 views
0

J'ai des onglets avec jquery ui. Chaque lien devrait recevoir une réponse de JSON, mais je suis incapable de le faire fonctionner. Ce est la substance active un:JQuery UI Tabs largeur Réponse JSON

<li class="ui-state-default ui-corner-top ui-tabs-active ui-state-active" role="tab" tabindex="0" aria-controls="ui-tabs-1" aria-labelledby="ui-id-1" aria-selected="true"> 
      <a href="/comments.json" class="ui-tabs-anchor" role="presentation" tabindex="-1" id="ui-id-1">comments</a> 
      </li> 

réponse est:

[{"created_at":"2013-07-12T22:51:46Z","id":8,"programa_id":88,"sent_at":"2013-07-12T22:51:46Z","texto":"testing","updated_at":"2013-07-12T22:51:46Z","user_id":null}] 

J'ai essayé plusieurs choses, mais la meilleure approche est:

$("#tab_messages").tabs({ 
    heightStyle: "fill", 
    beforeLoad: function(event, ui) { 
     ui.ajaxSettings.dataType = "json"; 
     ui.ajaxSettings.dataFilter = function(data) { 
     var jsonData = $.parseJSON(data); 
     alert(jsonData[0].texto); 
     return jsonData[1].texto; 
     }; 

     ui.jqXHR.error(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."); 
     }); 
    }}); 
    }); 

Panel ne se charge pas (jqXHR.error apparaît), mais si je renvoie jsonData [1] .texto, cela fonctionne.

Répondre

0

Je ne sais pas si elle est la meilleure solution, mais si je supprime la fonction ui.jqXHR.error et le code HTML de groupe créé à partir DataFilter, il semble fonctionner:

 ui.ajaxSettings.dataFilter = function(data) { 
     var jsonData = $.parseJSON(data); 
     var htmlpanel = ""; 
     $.each(jsonData, function(index, value){ 
      htmlpanel += "<li>" + value.texto + "</li>"; 
     }); 
     ui.panel.html(htmlpanel); 
     };