【发布时间】:2018-02-22 06:57:03
【问题描述】:
我有一个包含 select sql 语句的 select html。我们称它为 Select A。如果将 select A 更改为一个值,则 select B 和 select C 将根据 select A 的 select sql 语句中的数据进行更改。 我尝试并失败的方法是围绕在 Select A 上使用 onchange 进行的。然后它将调用一个函数。但是,此函数需要从 php 变量中读取以获取值。但是我们知道 PHP 在 javascript 中是行不通的。
我能想到的另一种方法是在选择 A 的 onchange 时再次使用窗口刷新功能。然后刷新的页面将 $_GET 来自 url 链接的值(例如:terminalassign.php?id=1&terminalposition=here&...)
但它再次使用 onchange,因此无法在 javascript 中获取 PHP 值。
任何人有任何想法去解决这个问题?
这是我的代码:
onchange 上的函数
<script language="Javascript" type="text/javascript">
function terminalupdate() {
var terminalposition = <?php echo (json_encode($terminalposition)) ;?>
var terminalstatus = <?php echo (json_encode($terminalstatus)); ?>
document.getElementById("terminalposition").value=terminalposition;
document.getElementById("terminalstatus").value=terminalstatus;
}
</script>
身体
<td><p id="spacing" align="left">Terminal ID</p></td>
<?php
$sql2 = "SELECT * FROM terminal WHERE merchantid IS NULL ORDER BY terminalaccountno ASC";
$RS2 = mysql_query($sql2, $db);
$rows = array();
while ($row = mysql_fetch_array($RS2))
$rows[] = $row;
?>
<td id="spacing" style="padding-left:100px">
<select name="terminalid" onchange="terminalupdate()" required>
<?php
foreach ($rows as $row) {
echo "<option value='$row[terminalid]'>$row[terminalaccountno]</option>";
$terminalstatus = $row['terminalstatus'];
$terminalposition = $row['terminalposition'];
}
?>
</select>
<?php if (!empty($merchantaddresserror)): ?><br>
<span class="spanstyle"><?php echo $merchantaddress;?></span>
<?php endif; ?><br>
</td>
</tr>
<tr>
<td><p id="spacing" align="left">Status</p></td>
<td id="spacing" style="padding-left:100px">
<select name="terminalstatus" id="terminalstatus" required>
<option value="" <?php if($terminalstatus=="") echo 'selected="selected"'?>> </option>
<option value="active" <?php if($terminalstatus=="active") echo 'selected="selected"'?>>Active</option>
<option value="inactive" <?php if($terminalstatus=="inactive") echo 'selected="selected"'?>>Inactive </option>
<option value="lost" <?php if($terminalstatus=="lost") echo 'selected="selected"'?>>Lost</option>
</select>
</td>
</tr>
<tr>
<td><p id="spacing" align="left">Terminal Position</p></td>
<td id="spacing" style="padding-left:100px">
<select name="terminalposition" required>
<option value="" <?php if($terminalposition=="") echo 'selected="selected"'?>> </option>
<option value="Deployed" <?php if($terminalposition=="Deployed") echo 'selected="selected"'?>>Deployed</option>
<option value="Used By Developer" <?php if($terminalposition=="Used By Developer") echo 'selected="selected"'?>>Used By Developer</option>
<option value="Sent For Repair" <?php if($terminalposition=="Sent For Repair") echo 'selected="selected"'?>>Sent For Repair</option>
<option value="Write-Off" <?php if($terminalposition=="Write-Off") echo 'selected="selected"'?>>Write-Off</option>
<option value="Stolen" <?php if($terminalposition=="Stolen") echo 'selected="selected"'?>>Stolen</option>
</select>
【问题讨论】:
-
使用 ajax 调用 SelectA 的变化来更新 Select B 和 C 的值。在这种情况下你不需要担心 get 和其他人
-
就我而言,如何应用 ajax 调用?
-
同意@Naincy Ajax 调用将是一个更好的选择,而不是这个......
-
如何让 ajax 调用适合我的情况?
-
@AnonymousVagrant 您正在调用 js 函数 onChange 代替它可以进行 ajax 调用并实现您想要的功能。
标签: javascript php mysql