我有两个选择Countries
和States
的选项。使用php
函数从数据库填充选项值。我想根据States
的选择填充Countries
。例如,如果我从Countries
选择美国,则States
选择选项将填充所有States
所属的美国国家/地区。
这是我的代码 -
<select id="countryName" name="countryName" onChange="getCountryCode()">
<option value=""></option>
<?php $countries = $location->getCountries();
foreach ($countries as $country) {
echo '<option value="' . $country->id . '">' . $country->name . '</option>';
}
?>
</select>
我可以使用javascript
函数
<script type="text/javascript">
function getCountryCode(){
var countryCode = document.getElementById('countryName').value;
}
</script>
毕竟,我试图使用php函数States
获取所选Country
的{{1}}。但我不知道如何将getStates($countryCode)
变量传递给javascript
函数。
php
有没有人知道如何将javascript变量传递给php,或者如果有更好的想法,请分享。
谢谢!
答案 0 :(得分:1)
目前,您将JavaScript代码(客户端)与PHP代码(服务器端)混合在一起。那是不可能的。将内容发送到浏览器后,php必须等待,直到用户采取一些再次调用服务器的操作。在您的情况下,有两种可能的解决方案。
PHP脚本
$states = $location->getStates($_GET['state']);
foreach ($states as $state) {
echo '<option value="' . $state->id . '">' . $state->name . '</option>';
}
Javascript(使用jQuery)
$('#countryName').on('change', function() {
$.ajax({
url: 'states.php',
data: { state: $(this).val() },
type: 'GET',
success: function(data) {
$('select[name="stateName"]').html(data);
}
});
});
PHP脚本
$states = $location->getAllStates();
foreach ($states as $state) {
echo '<option data-country="{$state->country}" value="{$state->id}">{$state->name}</option>';
}
JavaScript(使用jQuery)
$(function() {
var $statesSelect = $('select[name="stateName"]');
var $states = $('option', $statesSelect);
// first remove all elements from dom
$states.detach();
// and then listen to change event and show/hide them
$('#countryName').on('change', function() {
var val = $(this).val();
$('option', $statesSelect).detach();
$states.each(function() {
$(this).is('[data-country="' + val + '"').appendTo($statesSelect);
});
});
});