簡體   English   中英

如何將 php 變量作為參數傳遞給 javascript function

[英]How to pass a php variable as an argument to a javascript function

我在 JS 中有一個 function ,它將驗證傳遞給它的值。 我在 php 中還有一個 while 循環,它遍歷從數據庫中獲取的數據行。 這就是我想要實現的,每次調用 js function(在循環內)時,都會驗證特定行中的注冊號。 下面是我的示例代碼,我試圖讓它工作,但仍然找不到解決方法。

while ($row=mysqli_fetch_array($result)) {
        $registration_number=$row['registration_number'];
        echo "<script>checkRegNum(".$registration_number.");</script>";
       }
    ?>

    <script>

      function checkRegNum(str){
        var str_1=str.replace("-","");
        var str_2=str_1.replace("-","");
        var str_3=str_2.replace("-","");
        var str_4=str_3.replace("/","");
        var str_5=str_4.replace("/","");
        var str_6=str_5.replace("/","");

        var final_str=str_6;

        if(final_str.length!=14){
             return 2;
        }else{

          if( (isNaN(x1)) && (!isNaN(x2)) && (!isNaN(x3)) && (!isNaN(x4)) ){
            return 1;//format correct 
          }else{
            return 1;//Format wrong
          }
        }

    </script>

首先,您錯過了 function 的} 像這樣試試!

要在 javascript function 從 PHP 中傳遞值,您需要用 queets 包圍它,如下所示:
echo '<script>checkRegNum("'.$registration_number.'");</script>';

<script>

  function checkRegNum(str){
    var str_1=str.replace("-","");
    var str_2=str_1.replace("-","");
    var str_3=str_2.replace("-","");
    var str_4=str_3.replace("/","");
    var str_5=str_4.replace("/","");
    var str_6=str_5.replace("/","");

    var final_str=str_6;

    if(final_str.length!=14){
         console.log('A 1');
         return 2;
    }else{

      if( (isNaN(x1)) && (!isNaN(x2)) && (!isNaN(x3)) && (!isNaN(x4)) ){
        console.log('A 2');
        return 1;//format correct 
      }else{
        console.log('A 3');
        return 1;//Format wrong
      }
    }
  }

</script>

<?
    while ($row=mysqli_fetch_array($result)) {
        $registration_number=$row['registration_number'];
        echo '<script>checkRegNum("'.$registration_number.'");</script>';
    }
?>

要查看 function 是否有效,我為每個返回添加了控制台日志消息。

出現了很多問題,這表明這可能是一個糟糕的解決方案。

為什么不首先驗證 PHP 中的注冊號? 無效的注冊號如何在數據庫中結束? 在將輸入提交到數據庫等之前,您應該始終驗證輸入。而不是之后。

無論如何,checkRegNum function 應該在 PHP 片段上方定義。 在 javascript 中(與大多數語言一樣),您必須在引用之前定義 function 或變量。

<script>
  function checkRegNum(str){
    var str_1=str.replace("-","");
    var str_2=str_1.replace("-","");
    var str_3=str_2.replace("-","");
    var str_4=str_3.replace("/","");
    var str_5=str_4.replace("/","");
    var str_6=str_5.replace("/","");

    var final_str=str_6;

    if(final_str.length!=14){
         console.log('A 1');
         return 2;
    } else {
      if( (isNaN(x1)) && (!isNaN(x2)) && (!isNaN(x3)) && (!isNaN(x4)) ){
        console.log('A 2');
        return 1;//format correct 
      }else{
        console.log('A 3');
        return 1;//Format wrong
      }
    }
  }

<?php
    while ($row=mysqli_fetch_array($result)) {
        echo 'checkRegNum("' . htmlspecialchars($row['registration_number']) . '");';
    }
?>
</script>

此外,您可能希望使用 strip_tags() 或 htmlspecialchars() 和其他清理功能清理注冊號,以確保沒有通過您的數據庫進行代碼注入(XSS 攻擊)。 顯然,未經處理的數據最終可能會出現在您的數據庫中。

暫無
暫無

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

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