【问题标题】:PHP to JavaScript Confirm Message Box Variable Undefined (but has value)?PHP 到 JavaScript 确认消息框变量未定义(但有值)?
【发布时间】:2020-12-24 01:21:27
【问题描述】:

论坛上的第一个帖子,虽然是经常阅读的人,但需要解决这个问题:

php 程序填充 html 表格行:

echo "<td align='left' class='padded'><a href='#' onClick='confirmArrival(".$rowCont['id'].");'>Process</a></td>";

当用户点击处理项目时,JavaScript 确认消息显示与功能:

            function confirmArrival(itemId)
            {
                
                if (confirm("Are you sure you want to process this Item ?\n"+itemId))
                {
                    window.location='processscript_item1.php?itemId='+itemId;
                }
            }

我需要显示另一个php记录的值,改变onClick发送2个a​​rgs:

echo "<td align='left' class='padded'><a href='#' onClick='confirmArrival(".$rowCont['id'].",".$rowCont['second_item'].");'>Process</a></td>";

并改变了功能:

function confirmArrival(itemId, second_item)
            {
                
                if (confirm("Are you sure you want to process this Item ?\n"+second_item))
                {
                    window.location='processcript_item1.php?itemId='+itemId;
                }
            }

获取未捕获的引用错误:(此处显示的 second_item 变量值)未定义

消息框未显示,但我可以看到正在传递的值

非常感谢任何帮助

谢谢,

约瑟夫

【问题讨论】:

    标签: javascript php html


    【解决方案1】:

    你需要引号

    onClick='confirmArrival(\'".$rowCont['id']."\',\'".$rowCont['second_item']."\')
    

    我建议委托和使用属性

     <td align='left' class='padded'><a href='#' 
       class="confirm" 
       data-id='<?= $rowCont[' id ']?>' 
       data-second='<?= $rowCont[' second_item '] ?>'>Process</a></td>
    

    喜欢这个

    document.getElementById('tableId').addEventListener("click", function(e) {
      const tgt = e.target;
      if (tgt.classList.contains('confirm')) {
        if (confirm("Are you sure you want to process this Item ?\n" + tgt.dataset.second)) {
          tgt.href = 'processcript_item1.php?itemId=' + tgt.dataset.id;
          console.log("going to ", tgt.href)
        } else {
          e.preventDefault(); // cancel link
        }
      }
    })
    <table id="tableId">
      <tbody>
        <tr>
          <td align='left' class='padded'><a href='#' class="confirm" data-id='ID1' data-second='Second item 1'>Process</a></td>
        </tr>
        <tr>
          <td align='left' class='padded'><a href='#' class="confirm" data-id='ID2' data-second='Second item 2'>Process</a></td>
        </tr>
      </tbody>
    </table>

    【讨论】:

    • 谢谢@mplungjan 尝试了您的第一个解决方案并得到了 Uncaught SyntaxError: invalid escape sequence for onClick='confirmArrival(\'".$rowCont['id']."\',\'"。 $rowCont['second_item']."\')
    • 感谢您的建议,我将您的第一个示例中的 '(单引号)替换为 "(双引号),我得到了带有正确变量值且没有错误的消息框,非常感谢@mplungjan
    • 如果有错误,不要使用第一个解决方案 - 或者通过查看源代码来检查我是否正确放置了引号以查看是否缺少一个
    猜你喜欢
    • 1970-01-01
    • 2017-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-06
    • 1970-01-01
    • 2011-11-24
    相关资源
    最近更新 更多