【问题标题】:How to load a file that's normally shown with Javascript with PHP?如何使用 PHP 加载通常使用 Javascript 显示的文件?
【发布时间】:2022-11-14 05:54:30
【问题描述】:

我必须显示乐谱,为此我使用 Open Sheet Music Display。有用于显示工作表的 JavaScript 代码。现在我想从我的数据库中加载一个 MXML 文件。 通常这是显示它所需的代码:

      <script src="../scripts/opensheetmusicdisplay.min.js"></script>
        <div id="osmdCanvas"></div>
        <script >
        var osmd = new opensheetmusicdisplay.OpenSheetMusicDisplay('osmdCanvas');
            osmd.setOptions({
            backend: 'svg',
            drawTitle: true,
            });

        osmd.load('../xml/Band_Of_Brothers.musicxml').then(function () {
        osmd.render();
        });
        </script>

但是现在我尝试使用我的数据库项目来执行此操作,我以如下所示的方式将正常位置替换为该数据库元素。但它不再起作用了。我该如何解决?

        <script src="../scripts/opensheetmusicdisplay.min.js"></script>
            <div id="osmdCanvas"></div>
            <script >
                <?php
                $query = 'SELECT `sheets_xml` FROM `imslp_sheets` WHERE 1';
                $result = $conn->query($query);
                if ($result->num_rows > 0) {
                    while ($row = $result->fetch_assoc()) {
                        $thisXmlSheet = $row['sheets_xml'];
                    }
                }
                echo "
            var osmd = new opensheetmusicdisplay.OpenSheetMusicDisplay('osmdCanvas');
                osmd.setOptions({
                backend: 'svg',
                drawTitle: true,
                });

            osmd.load('$thisXmlSheet').then(function () {
            osmd.render();
            });";
                ?>
        </script>

【问题讨论】:

  • 生成的 JavaScript 代码是什么样的?使用browser console (dev tools)(点击F12),读取任何错误。
  • 这回答了你的问题了吗? How can I combine two strings together in PHP?
  • @SebastianSimon 有 2 个错误?第一个“加载资源失败:服务器响应状态为 404(未找到)”第二个错误在 opensheetmusicdisplay.min.js 中显示“未捕获(承诺中)错误:无法在 i.onreadystatechange 检索请求的 URL 404”
  • $thisXmlSheet 包含类似 xxxxx.musicxml 的内容是真的吗? (不是../xml/Band_Of_Brothers.musicxml),对吧?
  • @KenLee 是的,没错。在这种情况下,它是 Band_Of_Brothers.musicxml

标签: javascript php


【解决方案1】:

我认为这是路径问题。

因此,请改用以下内容:

  <?php
                $query = 'SELECT `sheets_xml` FROM `imslp_sheets` WHERE 1';
                $result = $conn->query($query);
                if ($result->num_rows > 0) {
                    while ($row = $result->fetch_assoc()) {
                        $thisXmlSheet = $row['sheets_xml'];
                    }
                }
?>
 <script src="../scripts/opensheetmusicdisplay.min.js"></script>
        <div id="osmdCanvas"></div>
        <script >
        var osmd = new opensheetmusicdisplay.OpenSheetMusicDisplay('osmdCanvas');
            osmd.setOptions({
            backend: 'svg',
            drawTitle: true,
            });

        osmd.load('../xml/<?php echo $thisXmlSheet; ?>').then(function () {
        osmd.render();
        });
        </script>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-02-24
    • 1970-01-01
    • 2010-10-09
    • 1970-01-01
    • 2017-11-14
    • 2017-01-13
    相关资源
    最近更新 更多