我在php页面中加载了一个servlet 这是我的php页面:reviewing.php
if(isset($_GET['x'])){
$x = $_GET['x'];
}else{
$x = '';
}
$site = $_SERVER['SERVER_NAME'];
if(isset($_GET['id'])){
$Id = "id=".$_GET['id'];
}else{
$Id = "";
}
$handle = fopen("http://".$site.":8080/Apps/reviewing.php?$Id", "r");
$contents = '';
while (!feof($handle)) {
$contents .= fread($handle, 8192);
}
fclose($handle);
echo $contents;
你可以看到我的php页面加载了一个servlet。 servlet是进程发生的地方。它还包括servlet中的JSP和html页面。
我需要能够在更改另一个下拉列表的选项时更改下拉列表的值。它们都是单独的mysql查询,但只有在下拉列表发生变化时才需要运行第二个查询。我这样做的原因是我可以在dropdown2查询中将dropdown1的值用作WHERE
。
我试过像
这样的东西 function reload(form)
{
var ID = form.agent.options[form.agent.options.selectedIndex].value;
return ID;
}
此功能进入<select onchange="reload(this.form);">
然后我想使用ID来运行下一个查询
<select>
//javascript
if(isset(reload())){
//JAVA
run query here WHERE id = ID;
while(rs.next()){
outn.print("<option>" + rs.getString("value") + "</option>");
}
}
</select>
这就是我设想的方式。另一种选择是在reload()函数中使用它
self.location='http://exmaple.com/reviewing.php?x=blah&ID=blah;
但我不想继续重新加载页面。这是低效的。
答案 0 :(得分:1)
那么你应该写下你的程序如下:
处理select元素onchange事件
在此处理程序中,您可以获得所选索引
这是一个小代码示例:
HTML
<select id='select1'>
<option id='option_1' value='1'>Option 1</option>
<option id='option_2' value='2'>Option 2</option>
<option id='option_3' value='3'>Option 3</option>
<option id='option_4' value='4'>Option 4</option>
</select>
<select id='select2'>
</select>
JS
document.getElementById('select1').onchange = function(){
var xmlhttp=new XMLHttpRequest();
var params = "id="+this.value //you can add more data, use & as delemitter
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlhttp.setRequestHeader("Content-length", params.length);
xmlhttp.setRequestHeader("Connection", "close");
xmlhttp.onreadystatechange=function(){
if (xmlhttp.readyState==4 && xmlhttp.status==200){
fillSelect(xmlhttp.responseText);
}
}
xmlhttp.open("POST","path/to/php.php",true);
xmlhttp.send(params);
}
var fillSelect = function(response){
//Here you can go through all elements from response
//and build new options and append them to Select2
}
PHP
if (!isset($_POST('id')) die("Submission failed!");
$id = $_POST('id');
$mysqli = new mysqli(HOST, USER, PW, DB); //assuming you have these static variables, change it for your settings
//use $id now to create the query
$query = "[...]";
$result = $mysqli->query($query);
echo json_encode($result);
JSFIDDLE for parts of the code
我希望php不包含错误。我无法测试它。如果出现问题,那么只需检查拼写是否正确等等......