【问题标题】:How to get and pass a XML string on php to java script from mysql如何从mysql获取php上的XML字符串并将其传递给java脚本
【发布时间】:2021-12-05 03:11:18
【问题描述】:

所以我得到了这个代码:

                  <input type='button' value='clickme' onclick='download(\"" . $rowtable['Protocolo'] . ".xml\",\"" . $rowtable['XML']. "\");'/></input>
                  <script>
                  function download(filename, text) {
                    var pom = document.createElement('a');
                    pom.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(text));
                    pom.setAttribute('download', filename);
                
                    if (document.createEvent) {
                        var event = document.createEvent('MouseEvents');
                        event.initEvent('click', true, true);
                        pom.dispatchEvent(event);
                    }
                    else {
                        pom.click();
                    }
                }
                  </script>

它从我的数据库中得到 2 个结果,即字符串(协议)和文本(XML)。 但问题是我的 TEXT(XML) 数据如下所示:

<?xml version="1.0" encoding="UTF-8"?><enviNFe versao="4.00" xmlns="asdasdasdasdasd"><idLote>1</idLote><indSinc>1</indSinc><NFe xmlns="asdsdasadsad">

正如你所看到的,它上面有很多“”。而且它是一种错误,代码。 所以我的问题是,如何将所有这些 $rowtable['XML'] 转换为正确的字符串。所以我可以将它传递给 JS 以便我可以下载它。

如果你有更好的方法从我的数据库中下载这个 XML 数据也是欢迎的。

【问题讨论】:

  • 应该是 JSON 编码吧。不过可以使用htmlspecialchars

标签: javascript php xml string download


【解决方案1】:

您在按钮 input 属性中缺少 Javascript 和 HTML 的转义。使用 urlencode()base64_encode()(在 PHP 中)将对特殊字符进行编码,因此它们不会破坏 JS 或 HTML 代码。

但是,如果您使用 a 元素,您可以在没有 JavaScript 的情况下执行此操作。

<html>
  <body>
  <?php
    $data = '<foo>Example String</foo>';
    $fileName = 'demo.xml';
  ?>
    <a
      class="DownloadButton"
      href="data:text/plain;charset=utf8,<?=urlencode($data)?>"
      download="<?=htmlspecialchars($fileName)?>">Download</a>
  </body>
</html>

数据被编码并放入Data URL

【讨论】:

    【解决方案2】:

    你可以用urlencode在php中编码xml,并直接在javascript中使用它的值。

    <input type='button' value='clickme' onclick='download(\"" . $rowtable['Protocolo'] . ".xml\",\"" . urlencode($rowtable['XML']). "\");'/></input>
    
    <script>
    function download(filename, text) {
        var pom = document.createElement('a');
        pom.setAttribute('href', 'data:text/plain;charset=utf-8,' + text);
        pom.setAttribute('download', filename);
    
        if (document.createEvent) {
            var event = document.createEvent('MouseEvents');
            event.initEvent('click', true, true);
            pom.dispatchEvent(event);
        }
        else {
            pom.click();
        }
    }
    </script>
    

    【讨论】:

    • 为什么要对不是 URL 的东西进行 URLencode?​​span>
    • 转义字符,如"
    猜你喜欢
    • 1970-01-01
    • 2010-11-23
    • 2013-08-21
    • 1970-01-01
    • 2018-09-12
    • 1970-01-01
    • 2017-02-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多