Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/471.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何根据不同的下拉选择更改下拉值_Java_Javascript_Php - Fatal编程技术网

Java 如何根据不同的下拉选择更改下拉值

Java 如何根据不同的下拉选择更改下拉值,java,javascript,php,Java,Javascript,Php,我在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://".$

我在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;
  } 
此功能进入
然后我想使用ID来运行下一个查询

<select>
//javascript
if(isset(reload())){
   //JAVA
   run query here WHERE id = ID;

    while(rs.next()){
      outn.print("<option>" + rs.getString("value") + "</option>");
    }
}
</select>

但是我不想一直重新加载页面。这是低效的。

好的,在编写程序之前,您应该如下所示:

  • 处理select元素onchange事件

    • 在select元素onchange attribute中(就像您所做的那样)
    • 用JS
    • 使用jQuery
  • 在此处理程序中,您可以获取所选索引

  • 使用它来获取id
  • 向php文件发送ajax请求,以从DB获取id为POST数据的数据
  • 用db的数据发回响应(可能应该使用json)
  • 使用响应填写您的选择
  • 下面是一个小代码示例:

    HTML

    PHP


    我希望php不包含错误。我无法测试它。如果有错误,那么只需检查拼写是否正确,以此类推……

    是否可以用另一种方式解释您正在尝试的内容。我不明白。。。也许你可以简化这个问题,或者试着把它概括起来。基本上,当我在DropdDown1上选择一个选项时,我希望dropdown2使用dropwdown1的ID填充一个查询。你能举个例子说明我如何做到这一点吗?我有点迷路了。好吧,你问了这样一个问题,半天之后你就失去了兴趣……我道歉。我还没有机会回到这个项目上来。我有急事,但星期三会回来的。我很感激你的意见,到时候会对它进行测试。
    self.location='http://exmaple.com/reviewing.php?x=blah&ID=blah;
    
    <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>
    
    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
    }
    
    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);