如何将php变量作为参数传递给javascript函数

时间:2019-11-06 07:39:19

标签: javascript php

我在JS中有一个函数,该函数将验证传递给它的值。我在php中也有一个while循环,它循环遍历从数据库中获取的数据行。这是我想要实现的,每次调用js函数(在循环内)时,都会验证特定行中的注册号。 以下是我尝试使其工作但仍找不到解决方法的示例代码。

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>

2 个答案:

答案 0 :(得分:0)

首先,您错过了}的功能。 尝试这样!

要在PHP的javascript函数内传递值,您需要用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>';
    }
?>

要查看功能是否有效,我为每次返回添加了控制台日志消息。

答案 1 :(得分:0)

出现了很多问题,这表明这可能是一个不好的解决方案。

为什么不首先验证PHP内部的注册号?无效的注册号如何最终出现在数据库中?您应该始终在将输入提交到数据库等之前验证输入。

无论如何,应该在PHP代码段上方定义checkRegNum函数。在javascript中(与大多数语言一样),您必须先定义函数或变量,然后再对其进行引用。

<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攻击)。显然,未经消毒的数据可能最终会存储在数据库中。