2014-05-20 51 views
0

我試圖從可摺疊集(jQuery手機)中的ajax插入數據庫中的內容。我的問題是,可摺疊的東西目前無法使用。它被關閉並且我的搜索過濾器無法搜索。可摺疊不適用於Ajax

我不確定我在頁面加載時的事件(有時我從頁面中摺疊disapear,當我從另一個頁面每個例子)。我也懷疑底部div的刷新。

此外,如果您有代碼建議。也許有更好的方法來做到這一點。

$homeDir = "http://localhost:8888/media"; 
$(document).on("pageinit ", "#informatique", afficherBranche); 

function afficherBranche() { 

    // Chargement des classes et des informations y relatives 
    $.ajax({ 
     url: $homeDir + "model/getdata.php", 
     dataType: "json", 
     type: "GET", 
     // en cas de succès 
     success: function (data) { 
      $("#collapsiblesetForFilter").empty(); // Vide le contenu de la LV 
      // Parcours de l'objet jSon 
      for (var i = 0; i < data.length; i++) { 
       $("#collapsiblesetForFilter").append('<div data-role="collapsible" data-iconpos="right" data-filtertext="HTML programmation web" class="ui-collapsible ui-collapsible-inset ui-corner-all ui-collapsible-themed-content ui-first-child ui-collapsible-collapsed">' + '<h3 class="ui-collapsible-heading ui-collapsible-heading-collapsed">' + '<a href="#" class="ui-collapsible-heading-toggle ui-btn ui-btn-icon-right ui-btn-inherit ui-icon-plus">' + data[i]["titre"] + '<span class="ui-collapsible-heading-status"> click to expand contents</span>' + '</a></h3>' + '<div class="ui-collapsible-content ui-body-inherit ui-collapsible-content-collapsed" aria-hidden="true">' + '<p>' + data[i]["description"] + '</p></div></div>'); 
      } 
     }, 
     error: function() { } 
    }); 
    $('#collapsiblesetForFilter').collapsibleset().trigger('create'); 
}; 
+0

您是否嘗試調用'$(「.selector」).collapsibleset(「refresh」);'ajax成功後?如:$ .ajax({/ * blah * /,success:function(data){/ * do stuff * /; $('#collapsiblesetForFilter')。collapsibleset(「refresh」);}});' –

+0

Can你發佈了一個simpel JSON輸出,我們可以用來重新創建你的例子? – Gajotres

+0

感謝您的幫助。是的,移動刷新幫助了很多。 此外,我把所有的代碼放在append中都是重複的,因爲我正確地刷新了它。所以我刪除了我的div中的一些類,,現在它工作。 – Chadanlo

回答

0

Coderecommendations:

  1. Trye使用延遲,因爲回調depricated。按照鏈接搜索「棄用」,您將獲得註釋和上述如何使用它。基本上它是$ .ajax(..)。done(function success(){})。fail(function error(){});

我不會講法語,所以我不知道什麼是錯的,但我想,你的最後一行也應該只在成功調用,不應該嗎? 這意味着你只需要在for循環後移動這一行。

+0

感謝您的幫助。正如你所說,提高這條線有一點幫助。 $('#collapsiblesetForFilter')。collapsibleset()。trigger('create'); 因此,而不是使用成功,我應該使用.done,而不是錯誤它是失敗? 讓我們來看看它是否有效:) – Chadanlo

+0

是的。 .fail()相當於錯誤回調。延期也是可以調用的。你可以做「$ .ajax(...)。然後(dosomething可能會失敗).done(不管).fail()」。這會導致給定的函數在成功完成ajax調用後執行,如果then函數正常工作,則執行失敗(),否則失敗。 (據我瞭解,但我沒有案件來測試這一點) –