簡體   English   中英

在javascript中傳遞echo php

[英]Pass echo php in javascript

根據問題,我在 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']; ?> <?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>

html的代碼如下。

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

為了將它傳遞給 javascript,有多種解決方案。 最簡單的(我不會選擇,因為用 php 搞亂了 javascript)是:

<?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>

這將設置可在 javascript 中訪問的數組regions 您可以將 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 不是很熟悉,所以我不會為此發布代碼。 那是先進的技術。

你可以做這樣的事情

<select id="input">
  <option value="">select option</option>
  <?php foreach(mysqli_fetch_assoc($regioni) as $region){ ?>
    <option value="<?php echo $region['regione']; ?>"><?php echo $region['regione']; ?></option>
  <?php } ?>
</select>

如果您需要為選擇器設置默認值,您可以與一些變量或字符串進行比較

<option value="<?php echo $region['regione']; ?>"<?php ($region['regione'] == 'INDIA') ? echo 
 ' selected="selected"' : '' ?>><?php echo $region['regione']; ?></option>

暫無
暫無

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

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