javascript - ajax响应后执行soundmanager2

标签 javascript php ajax soundmanager2

我正在尝试在 ajax 响应中执行脚本,但似乎找不到任何方法来做到这一点。我的脚本加载在 html - head 标签中,我还有一个 id="browsemusic"的 div,我的 ajax 响应将发送到该 div。

生成页面的 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() 函数是我发现这种工作的唯一方法。问题是,如果我单击调用同一文件的另一种类型(或具有类似文件且具有相同功能的另一个按钮),它就会停止工作。所以它只在第一次有效。

最佳答案

解决了,我必须在我的ajax响应中重新启动()脚本。 (soundmanager2有一个reboot()函数),所以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)
                {
                    soundManager.reboot();
                    $("#browsemusic").html(option);
                    $('#sortable1, #sortable2').sortable({
                        connectWith: ".connected"
                    }).disableSelection();
                }
            });
        }
        return false;
    });
});

关于javascript - ajax响应后执行soundmanager2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22208257/

相关文章:

php - jQuery 不断 ping 以获取 Ajax 响应

php - MySQL 查询——它们到底有多贵?

javascript - 对 Spring Boot 端点的 Ajax 请求无法读取 HTTP MSG

javascript - 如何将多个 d3 元素添加到一个页面

javascript - 更新多个垂直条

php - 多层次不同类型的继承

c# - 搜索中的单词如何像在 Google 中一样附加

javascript - 如何在 Ajax 成功设置中填充 Span 元素

javascript - PHP EWS 创建回调 token

javascript - 无法在首次单击时禁用链接并在动画完成时重新启用