javascript - 在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>
解决方案
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 不是很熟悉,所以我不会发布代码。那些是先进的技术。
推荐阅读
- php - 如何从 RAND() 获取两条不同的记录?
- sql - 配置 Artifactory 以处理外部 MSSQL 服务器错误
- javascript - 格式化 JavaScript 数组中的特定值
- python - TypeError:字符串格式化期间并非所有参数都转换(Python)
- spring-boot-actuator - 执行器 - 就绪状态总是返回 503
- html - 主要内容和 scrollspy 导航栏重叠
- javascript - 使用通过原生 JavaScript 和 jQuery 方法选择的元素
- xml - 如何为给定的 XML 片段编写 XSD。?
- c# - 在c#中将json文件作为流读取而不将其存储在内存中
- python - 如何解决python中的异常410?