繁体   English   中英

如何从 mysql 获取并传递 php 上的 XML 字符串到 java 脚本

[英]How to get and pass a XML string on php to java script from mysql

所以我得到了这个代码:

                  <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 个结果,即一个 String(Protocolo) 和一个 TEXT(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 数据,也欢迎。

您可以使用urlencode在 php 中对 xml 进行urlencode ,并直接在 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>

您在按钮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>

数据被编码并放入数据 URL 中

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM