簡體   English   中英

如何在里面使用 PHP 變量<script> tag

[英]how to use a PHP variable inside <script> tag

我在 URL 中傳遞 PHP 變量,所以我的頁面鏈接看起來像這樣www.example.com?redirect=neworders

基於$_GET['redirect']值,我在示例中創建了頁面的內容input

然后在<script>部分,我想根據PHP值調用帶有參數的函數。

我當前的代碼現在正在工作但我相信這不是正確的方法,盡管我檢查了多個線程並且通常答案是我提到的選項之一。

如果我做對了有什么建議嗎? 我在代碼中添加了注釋以了解我的情況。 非常感謝。

    <?php 
    
   //my url can be either www.example.com?redirect=neworders or www.example.com?redirect=deliveredorders

    switch($_GET['redirect']) {
      case 'neworders':
          $page = 'Backlog'; 
          break;
      case 'deliveredorders':  
          $page = 'Shipment';   
          break;
          }
    
    ?>
    
      <body>
    //based on $page value, I create the input value with a specific id
    <?php  
    if ( $page == 'neworders') { 
     echo '<input type="text" id="BacklogName" placeholder="enter order number">'; }
    elseif ( $page == 'deliveredorders') { 
     echo '<input type="text id="ShipmentName" placeholder="enter order number then serial number">'; 
    } 
    ?> 
    
    <button type="button" id="submitButton">Submit</button>
    
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
    
      </body>
    
    <script>
    $(document).ready(function() { 
    
      //I have some functions declared here to use based on $page value

    function submitEvent(element, input) {
    element.click(function() {      
      alert(input.val());
      }); 
    }
    
    //based on $page value, intialize the function with exact selectors
    
    //first Option came to my mind : check the $page value and echo function intialization as string
    <?php 
    if ( $page == 'neworders') { 
      echo 'submitEvent($("#submitButton"), $("#BacklogName"));'; }
    elseif ( $page == 'deliveredorders') { 
      echo 'submitEvent($("#submitButton"), $("#ShipmentName"));'; } 
    ?> 
    
    //second option came to my mind : use javascript 'if else' and only echo the $page value
    
    if ("<?php echo $page; ?>" == "neworders") { 
      submitEvent($("#submitButton"), $("#BacklogName")); }
    else if ("<?php echo $page; ?>" == "deliveredorders") { 
      submitEvent($("#submitButton"), $("#ShipmentName")); 
    }
    
    });
    </script>

你可以像這樣使用它:

<script type="text/javascript">
  
    var baz = <?php echo 42; ?>;
    alert(baz);
</script>

你可以嘗試這樣的事情:

<?php
    $var = "123";
?>

<script type="text/javascript">
    alert("<?php echo $var; ?>");
</script>

或者在你的情況下,你可以簡單地將 php 變量存儲到 javascript 變量

var page = "<?php echo $_GET['redirect']; ?>";

比你可以用腳本中的 javascript 變量做水

這是解決您問題的更簡單的解決方案,根據需要在數組中添加任意數量的重定向選項。

<?php 
    $redirectsList = array(
        'neworders'=>array(
            'Page'=>'Backlog',
            'ElementID'=>'BacklogName',
            'Placeholder'=>'enter order number'
        ),
        'deliveredorders'=>array(
            'Page'=>'Shipment',
            'ElementID'=>'ShipmentName',
            'Placeholder'=>'enter order number then serial number'
        )
    );
    $redirect = isset($_GET['redirect']) ? $_GET['redirect'] : '';
    $redirectData = isset($redirect!='' && isset($redirectsList[$redirect])) ? 
    $redirectsList[$redirect] : '';    
?>
<body>
    <input type="text" id="<?php echo $redirectData['ElementID']; ?>" placeholder="<?php echo $redirectData['Placeholder']; ?>">
    <button type="button" id="submitButton">Submit</button>
    
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
   
    <script>
    $(document).ready(function() { 
        $('#submitButton').click(function(){
            alert($('#<?php echo $redirectData['ElementID']; ?>').val());
        });
    });
    </script>
</body>

這是一個錯誤的問題。 您的代碼運行良好,但在您的條件下,您的$page永遠不會是 'neworders' 或 'deliveredorders'。 您將$page分配給“Backlog”或“Shipment”。 更改開關塊或您的 if/else 條件

switch($_GET['redirect']) {
      case 'neworders':
          $page = 'neworders'; 
          break;
      case 'deliveredorders':  
          $page = 'deliveredorders';   
          break;
}

將變量傳遞給 JS 的正確方法是使用json_encode

var page = <?=json_encode($_GET['redirect'])?>;
if (page == "neworders") { 
  submitEvent($("#submitButton"), $("#BacklogName")); }
else if (page == "deliveredorders") { 
  submitEvent($("#submitButton"), $("#ShipmentName")); 
}

<?=$var?>是速記 echo

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM