将php echo设置为javascript变量无效数据

Setting php echo to javascript variable invalid data

本文关键字:变量 无效 数据 javascript php echo 设置      更新时间:2023-09-26

我试图将我的PHP echo的值设置为Javascript变量。JS变量然后将该值设置为XML页面中的一个元素,以便在标签打印机上打印条形码。

到目前为止,javascript变量从文本区域获取元素,似乎工作得很好,但是当我将变量设置为PHP echo时,数据格式似乎是不正确的。我想我可能是把echo设置错了,但是我没有办法了。

目前textarea是由echo填充的,所以它可以工作,但是我需要不使用textarea。

与textarea

  <?php
        $sqlUpd = "SELECT name, req, printlabel FROM req_requisitions WHERE id = '".$_GET["recordid"]."'";
            $name = $row1['name'];
            $reqNumber = $row1['req'];
            $print = $row1['printlabel'];
        }
?>
segment of my JS-------------------------------------------------------
      function onload()
{
    var textTextArea = document.getElementById("textTextArea");
    var printButton = document.getElementById('printButton');
    // prints the label
    printButton.onclick = function()
    {
        try
        {
            // open label
            var labelXml = loadXMLDoc("barcode.xml");
            var label = dymo.label.framework.openLabelXml(labelXml);
            // set label text
            label.setObjectText("BARCODE", textTextArea.value);
            // select printer to print on
            // for simplicity sake just use the first LabelWriter printer
            var printers = dymo.label.framework.getPrinters();
            if (printers.length == 0)
                throw "No DYMO printers are installed. Install DYMO printers.";
            var printerName = "";
            for (var i = 0; i < printers.length; ++i)
            {
                var printer = printers[i];
                if (printer.printerType == "LabelWriterPrinter")
                {
                    printerName = printer.name;
                    break;
                }
            }
    // prints the label
    printButton.onclick = function()
 My Text Area-------------------------------------------------------
  <div id="textDiv">
    <label for="textTextArea">Label text:</label><br/>
    <textarea name="textTextArea" id="textTextArea"  rows='5' cols='40'><?php echo $reqNumber; ?></textarea>
</div>

下面是我想修改为

的内容
function onload()  {
    var textTextArea = <?php echo $reqNumber;?>;
    var printButton = document.getElementById('printButton');
}

它不能将值传递给js,但传递给textarea?

这个"$ reqnumber"是一个字符串吗?

如果是,尝试var textTextArea = '<?php echo $reqNumber;?>';

基于另一个问题:https://stackoverflow.com/a/1035658/2331182

可以将整数转换为字符串。

试试这个:

var textTextArea = '<?php echo (string)$reqNumber;?>';

var textTextArea = '<?php echo strval($reqNumber);?>';

我不确定这是否是最佳实践,但当我想将数据从php传递到js时,我通常使用cookies,反之亦然,假设数据不敏感,如密码或任何此类。

PHP

setcookie('reqnum',$reqNumber);

JS

var x = readCookie('reqnum');

我不确定这是不是最好的做法,但是减少了很多混乱。

this:

function onload()  {
    var textTextArea = '<?php echo $reqNumber;?>';
    var printButton = document.getElementById('printButton');
}

将只工作,如果JS代码是在同一个文件,如果这是一个外部文件,这将不起作用。请注意,正如@wong Ian所说,你缺少引号。

我认为使用jQuery会更好然后你可以添加PHP变量作为元素的属性然后通过jQuery访问它

<div id="textDiv">
    <label for="textTextArea">Label text:</label><br/>
    <textarea name="textTextArea" id="myId"  rows='5' cols='40' data_var='<?php echo $reqNumber; ?>'><?php echo $reqNumber; ?></textarea>
</div>

和JS中的

textTextArea = $("#myId").attr('data_var);