2014-03-05 38 views
0

我試圖在ajax響應中執行一個腳本,並且似乎無法找到任何方法來執行此操作。我的腳本被加載到html頭標籤中,我也有一個id =「browsemusic」的div,在那裏我的ajax響應去了。在ajax響應後執行soundmanager2

生成的頁面我的PHP文件:

include('dbcon.php'); 
if(isset($_REQUEST['all']) && $_REQUEST['all'] != ''){ 
    //===============================Button "ALL"==================================== 
    unset($_REQUEST['kw']); 
    unset($_REQUEST['genre']); 
    $query = "select * from music"; 
    $result = mysqli_query($link, $query) or die (mysqli_error()); 
    echo '<ul id="sortable1" class="connected">'; 
    while($info = mysqli_fetch_array($result)){ 
     echo '<li><div class="ui360"><button type="button" class="addtoplaylist" >Add</button><a href="' . $info['path'] . '"> '.$info['artist'].' - '.$info['title'].' ('.$info['album'].') '.'</a></div><hr /></li>'; 
    }; 
    echo '</ul>'; 
}elseif (isset($_REQUEST['kw']) && $_REQUEST['kw'] != ''){ 
    //============================= Search for music ================================ 
    $kws = $_REQUEST['kw']; 
    $kws = mysqli_real_escape_string($link, $kws); 

    $query = "select * from music where title like '%".$kws."%' or artist like '%".$kws."%'"; 
    $result = mysqli_query($link, $query) or die (mysqli_error($link)); 
    echo '<ul id="sortable1" class="connected">'; 
    while($info = mysqli_fetch_array($result)){ 
     echo '<li><div class="ui360"><button type="button" class="addtoplaylist" >Add</button><a href="' . $info['path'] . '"> '.$info['artist'].' - '.$info['title'].' ('.$info['album'].') '.'</a></div><hr /></li>'; 
    }; 
    echo '</ul>'; 
}elseif(isset($_REQUEST['genre']) && $_REQUEST['genre'] != ''){ 
    //=====================================Browse By Genre =========================================== 
    $genre = $_REQUEST['genre']; 
    $genre = mysqli_real_escape_string($link, $genre); 
    $gquery = "select music_id from musicgenre where genre_id = '$genre'"; 
    $results = mysqli_query($link, $gquery) or die (mysqli_error($link)); 
    $music=array(); 
    while($id_result = mysqli_fetch_array($results)){ 
     $music[] = $id_result['music_id']; 
    }; 
    echo '<ul id="sortable1" class="connected">'; 
    foreach($music as $song){ 
     $query = "select * from music where music_id = '$song'"; 
     $result = mysqli_query($link, $query) or die (mysqli_error());; 
     while($info = mysqli_fetch_array($result)){ 
     echo '<li><div class="ui360"><button type="button" class="addtoplaylist" >Add</button><a href="' . $info['path'] . '"> '.$info['artist'].' - '.$info['title'].' ('.$info['album'].') '.'</a></div><hr /></li>'; 
     }; 
    }; 
    echo '</ul>'; 
}else{ 
// ================================ Default ========================================= 

    $query = "select * from music"; 
    $result = mysqli_query($link, $query) or die (mysqli_error()); 
    echo '<ul id="sortable1" class="connected">'; 
    while($info = mysqli_fetch_array($result)){ 
     echo '<li><div class="ui360"><button type="button" class="addtoplaylist" >Add</button><a href="' . $info['path'] . '"> '.$info['artist'].' - '.$info['title'].' ('.$info['album'].') '.'</a></div><hr /></li>'; 
    }; 
    echo '</ul>'; 

};

和我的AJAX文件:

$(document).ready(function(){ 
    $(".all").click(function() 
    { 
     var all = $(this).attr("id"); 
     if(all != '') 
     { 
      $.ajax 
      ({ 
       type: "POST", 
       url: "php/searchbrowselist.php", 
       data: "all="+ all, 
       success: function(option) 
       { 
        var $this = $("#browsemusic") 
        $this.html(option); 
        function loadjscssfile(filename, filetype){ 
         if (filetype=="js"){ //if filename is a external JavaScript file 
          var fileref=document.createElement('script') 
          fileref.setAttribute("type","text/javascript") 
          fileref.setAttribute("src", filename) 
         } 
         else if (filetype=="css"){ //if filename is an external CSS file 
          var fileref=document.createElement("link") 
          fileref.setAttribute("rel", "stylesheet") 
          fileref.setAttribute("type", "text/css") 
          fileref.setAttribute("href", filename) 
         } 
         if (typeof fileref!="undefined") 
          document.getElementsByTagName("head")[0].appendChild(fileref) 
         } 

         loadjscssfile("js/soundmanager2.js", "js") //dynamically load and add this .js file 
         loadjscssfile("js/360player.js", "js") 
        $('#sortable1, #sortable2').sortable({ 
         connectWith: ".connected" 
        }).disableSelection(); 
       } 
      }); 
     } 
     return true; 
    }); 
}); 

的loadjscssfile()函數是我發現,這類作品的唯一途徑。問題是如果我點擊另一個調用相同文件的流派,(或另一個具有相同功能的文件的按鈕),它將停止工作。所以它只是第一次。

+2

把功能在功能和調用函數,而不是你需要它每次。哇...它幾乎聽起來像它有一個名稱「功能」的原因。 –

+0

問題在於,它不僅僅是一個函數,它實際上是一個作爲音頻播放器的整個腳本。有功能的表兄弟(soundmanager2) – Spluf

+0

在你的手藝中引以爲傲。閱讀腳本並找出它的作用。然後編寫一個這樣的函數。你想要做的醜陋黑客會破壞;大概當你最不期待的時候。 –

回答

8

解決了,我不得不在我的ajax響應中重新啓動腳本。 (這裏有關於soundmanager2重新啓動()函數),所以阿賈克斯文件現在是:

$(document).ready(function(){ 
     $(".all").click(function() 
    { 
     var all = $(this).attr("id"); 
     if(all != '') 
     { 
      $.ajax 
      ({ 
       type: "POST", 
       url: "php/searchbrowselist.php", 
       data: "all="+ all, 
       success: function(option) 
       { 
        soundManager.reboot(); 
        $("#browsemusic").html(option); 
        $('#sortable1, #sortable2').sortable({ 
         connectWith: ".connected" 
        }).disableSelection(); 
       } 
      }); 
     } 
     return false; 
    }); 
}); 
+0

這對我也有幫助。謝謝 :) – prateek31