首页 > 解决方案 > 在javascript中传递echo php

问题描述

根据问题,我在 javscript 中实现了一个动态表单,它要求在选择中选择的第一个选项与新选择中的另一个匹配:

<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>Documento senza titolo</title>
        <script>
            function random_function()
            {
                var a=document.getElementById("input").value;
                if(a==="INDIA")
                {
                    var arr=["Maharashtra","Delhi"];
                }
                else if(a==="USA")
                {
                    var arr=["Washington","Texas","New York"];
                }

                var string="";

                for(i=0;i<arr.length;i++)
                {
                    string=string+"<option>"+arr[i]+"</option>";
                }
                string="<select name='any_name'>"+string+"</select>";
                document.getElementById("output").innerHTML=string;
            }
        </script>
</head>
    <body>
        <select id="input" onchange="random_function()">
            <option>select option</option>
            <option>INDIA</option>
            <option>USA</option>
        </select>
        <div id="output">

        </div>
    </body>
</html>

到这里为止没什么奇怪的,但是现在我想知道,以前创建了一个数据库,我该如何以静态方式代替城市来实现<?php echo $row_regioni['regione']; ?>

<select>
<?php do { ?>
<option>
<?php echo $row_regioni['regione']; ?>
</option>
<?php } while ($row_regioni = mysqli_fetch_assoc($regioni)); ?>
</select>
</form>

标签: javascriptphp

解决方案


html的代码如下。

<select>
    <?php
    while(($row = mysqli_fetch_assoc($regioni)) !== null){
        print(
            "<option value='".htmlentities($row['regione'])."'>".
                htmlentities($row['regione']).
            "</option>"
         );
    }
    ?>
</select>

要将其传递给 javascript,有多种解决方案。最简单的(我不会选择,因为把 javascript 和 php 搞乱了)是:

<?php
    $regions = array();
    while(($row = mysqli_fetch_assoc($result)) !== null){
        array_push($regions, '"'.str_replace('"', '\\"', $row['regione']).'"');
    }
?>
<script>regions = [<?php print(implode(",\n\t", $regions)); ?>];</script>

这将设置数组regions,然后可以在 javascript 中访问该数组。您可以将您的 js 代码修改为:

function random_function(){
    // ... 
    var string = "";
    for(var i = 0; i < regions.length; i++){
        string += "<option value='" + regions[i] + "'>" + regions[i] + "</option>";
    }
    string = "<select name='any_name'>" + string + "</select>";
    //...
}

您的示例如下所示:

<!doctype html>
<html>
  <head>
    <meta charset="UTF-8">
    <title>Documento senza titolo</title>
    <?php
        $regions = array();
        while(($row = mysqli_fetch_assoc($result)) !== null){
            array_push($regions, '"'.str_replace('"', '\\"', $row['regione']).'"');
        }
    ?>
    <script>regions = [<?php print(implode(",\n\t", $regions)); ?>];</script>
    <script>
        function random_function(){
          var a = document.getElementById("input").value;
          var arr;
          
          if(a === "INDIA"){
            arr = ["Maharashtra", "Delhi"];
          }
          else if(a === "USA"){
            arr = ["Washington", "Texas", "New York"];
          }
          
          var options = "";
          
          for(var i = 0; i < regions.length; i++){
            options += "<option value='" + regions[i] + "'>" + regions[i] + "</option>";
          }
          
          var select ="<select name='any_name'>" + options + "</select>";
          document.getElementById("output").innerHTML = select;
        }
      </script>
  </head>
  <body>
    <select id="input" onchange="random_function()">
      <option>select option</option>
      <option>INDIA</option>
      <option>USA</option>
    </select>
    <div id="output">

    </div>
  </body>
</html>

我宁愿用 php 创建选择。如果这不可能,我会使用 ajax 请求从数据库中获取值。但是我假设你对 js 不是很熟悉,所以我不会发布代码。那些是先进的技术。


推荐阅读