我在所有国家/地区都有一个选择,我打电话给一个函数onChange,根据以下代码获取该国家/地区的城市列表:
<select name="country" id="country" onChange="getCity(this.value)">
我有以下代码从我的数据库中获取城市列表的代码:
<script language="javascript" type="text/javascript">
function getCity() {
$(function(countryId) {
var str = '<select name="city" id="city"><?php $query = "SELECT city FROM cities where country = 'countryId'";
$result = pg_query($query);
if (!$result) {
echo "Problem with query " . $query . "<br/>";
echo pg_last_error();
exit();
}
printf ("<option value=Select>Select a City</option>");
while($myrow = pg_fetch_assoc($result)) {
printf ("<option value=$myrow[city]>$myrow[city]</option>");
}?></select>';
document.getElementById('citydiv').innerHTML= str;
});
}
</script>
如何传递变量countryId?
如果我使用以下尝试使用变量countryId我的代码不起作用。
var str = '<select name="city" id="city">
<?php $query = "SELECT city FROM cities where country = 'countryId'";
但是,如果我更改值并手动引入特定值,那么它可以工作:
var str = '<select name="city" id="city">
<?php $query = "SELECT city FROM cities where country = 'Albania'";
请注意我的var str存储以下所有代码,以便将城市Div写入:
var str =&#39;
var str = '<select name="city" id="city"><?php $query = "SELECT city FROM cities where country = 'Spain'";
$result = pg_query($query);
if (!$result) {
echo "Problem with query " . $query . "<br/>";
echo pg_last_error();
exit();
}
printf ("<option value=Select>Select a City</option>");
while($myrow = pg_fetch_assoc($result)) {
printf ("<option value=$myrow[city]>$myrow[city]</option>");
}?></select>';
更新
根据答案,我希望完成像
这样的事情<script language="javascript" type="text/javascript">
function Nadaquever(countryId) {
$(function() {
var str = '<select name="city" id="city"><?php $query = "SELECT city FROM cities where country = ' + countryID + '"';
str += '$result = pg_query($query);';
str += 'if (!$result) {';
str += 'echo "Problem with query " . $query . "<br/>";';
str += 'echo pg_last_error();';
str += 'exit();';
str += '}';
str += 'printf ("<option value=Select>Select a City</option>");';
str += 'while($myrow = pg_fetch_assoc($result)) {';
str += 'printf ("<option value=$myrow[city]>$myrow[city]</option>");';
str += '}?></select>';
document.getElementById('citydiv').innerHTML= str;
});
}
</script>
但它不起作用
非常感谢
答案 0 :(得分:0)
要在Javascript中添加变量,您必须使用+
符号,请参阅下面的代码。
var str = 'blah blah blah';
str += ' blah';
str += ' ' + 'and some more blah';
你也需要像这样传递国家ID
function getCity(countryId) {
答案 1 :(得分:0)
您需要了解javascript string c oncatenation
它必须像下面的代码一样改变。
[正确代码]
var countryId = "myId";
var str = '<select name="city" id="city"><?php $query = "SELECT city FROM cities where country = ' + countryId + '"';
答案 2 :(得分:0)
我不知道这将如何将您的SQL查询发送到您的数据库。如果你只是将Javascript字符串连接在一起,那么你最终会得到一个 - 一个包含一些永远不会看到服务器的PHP标记的字符串(尝试将str
var记录到控制台并查看你拥有的内容)。
您需要考虑应用程序的流程。根据您在getCity()
框中的选项更改时尝试触发Javascript函数select
的方式,我假设您不想重新加载页面,因此您需要发送通过AJAX对数据库进行SQL查询。
假设您的标记看起来像这样:
<div id="citydiv">
<select id="country" name="countryID">
<option value="Select">Select a Country</option>
<option value="Albania">Albania</option>
</select>
<select id="city" name="city">
<option value="Select">Select a City</option>
</select>
</div>
您可以使用jQuery生成城市字段的选项,如下所示:
$(function(){
$('#country').on('change',function(){
$.ajax({
url: '/getCities.php',
method: "POST",
data: {countryID: $('#country').val() }
})
.done(function(data){
$('#city').html(data);
});
});
});
这会将所有onchange
个事件发送到getCities.php
文件,您可以从$_POST['countryID']
检索 countryID ,然后将其插入到您的SQL查询中,然后检索结果集然后打印出选择字段的选项。然后,jQuery会将select
字段的选项设置为PHP脚本的结果。
此外,在查询数据库以提高安全性时,值得考虑使用Postgres prepared statements。