我有两个选择框
<h3>Results</h3>
<select id="register_form" name="sport" />
<option value="Rugby">Rugby</option>
<option value="Cricket">Cricket</option>
<option value="Football">Football</option>
</select>
<?php
echo'<select name="match">';
echo'<option value="'.$row['event_id'].'">'.$row['team1'].' VS '.$row['team2'].'</option>';
echo'</select>';
?>
<input id="register_form" type="submit" value="Display" name="submit" />
用户搜索结果:
在第一个选择框中选择运动类型,然后在第二个选择框中根据运动类型填充选项值。
是否有可能在PHP中做到这一点,而无需用户首先按提交以获得运动类型的$_POST值?
我最好的选择是什么?
PHP总是需要重新加载页面来刷新您的信息,因此,正如anant kumar singh所说,您需要使用AJAX来实现这一点。正如yak613所说,jQuery将帮助您轻松使用AJAX
1。Ajax是您所要求的唯一选项(不需要页面刷新)
-
当你使用php时,它只可能与页面刷新。
-
帮助链接如下:-
使用jQuery根据第一个选择列表选项更改第二个选择列表
https://www.daniweb.com/web-development/php/threads/372228/php-and-ajax-auto-populate-select-box https://remysharp.com/2007/01/20/auto-populating-select-boxes-using-jquery-ajax您可以使用此多重选择Dropdawn列表:http://coursesweb.net/ajax/multiple-select-dropdown-list-ajax_t,它可以用于多组选择列表
我在我的项目中也遇到过同样的问题。但是所需的功能更高——不是两个依赖的选择框和更大的数量。我已经写了一个简单的函数来加载我的selectboxes:
//formId - form where selectbox is
//name - attribute "name" of selectbox
//dataSourceUrl - url to PHP-file
//affectingField - string with value that filters the selecbox's data
function loadSelectbox( formId, name, dataSourceUrl, affectingField ){
//console.log('Loading data to selectbox name="'+name+'":');
var selectbox = $('#'+formId+' select[name="'+name+'"]');
if(selectbox){
//console.log("Selecbox found");
if(affectingField != null){
var affectingValue = $('#'+formId+' [name="'+affectingField+'"]').val();
dataSourceUrl += '?affectingValue='+affectingValue;
}
var options = selectbox.find('option');
var jqxhr = $.ajax({
url: dataSourceUrl,
dataType: 'text'
})
.done(function(data) {
//console.log(data);
if(data != ""){
var optionsObject = JSON.parse(data);
var i = 0;
console.log(optionsObject);
var options = [];
$(optionsObject).each(
function(){
options[i] = '<option value="'+$(this)[0]['val']+'">'+$(this)[0]['text']+'</option>';
i++;
}
);
selectbox.html(options);
if(urlParamsSet[name] == false){
setParamFromUrl(name);
}
}
else{
selectbox.html('<option value="">Все</option>');
}
})
.fail(function() {
alert("Problems with server answer");
})
selectbox.prop("disabled", false);
}
else{
console.log("No selectbox with such name");
}
}
不是说这段代码是完美的,但是它可以工作。php文件必须以JSON格式返回值给selecbox(转换自结构:array(index, value, text))