首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HTML表单输入依赖于以前使用javascript和php输入的表单,不起作用

HTML表单输入依赖于以前使用javascript和php输入的表单,不起作用
EN

Stack Overflow用户
提问于 2016-11-11 19:20:07
回答 1查看 804关注 0票数 0

我一直在尝试使用html、Javascript、PHP和MYSQL在HTML表单中创建一些依赖于先前输入的选择输入。这对我之前的一个页面有效,所以当创建这个新页面时,我只是在javascript文件中定义了一个新函数,并创建了一个新的php文件来发送数据,因为我想为表单中的最后一个选择框输出一些不同的东西。

即使我镜像了之前的函数和php文件,只更改了几个小细节,但我看不到我为最后一次下拉选择创建的任何选项,而且我似乎没有得到任何错误,实际上一个没有错误的空白php页面正在通过,我不确定为什么会发生这种情况。

这是我的表格的屏幕截图,你可以看到'Rack Unit Location‘选项没有创建任何选项,并且是空白的,其他选择框都可以正常工作:

Form Screenshot

这是我的HTML表单的一部分,所以我希望Rack Unit Location取决于Rack Number,Rack Number取决于位置,而Rack又取决于Rack。

代码语言:javascript
复制
<tr>
    <th>Rack </th>  
    <script src='includes/Jquery/default.js'></script> <!-- Link to new Javascript file -->
    <td>    
        <select id='rack_name' name="rack_name" onchange="window.loadLocation()">
        <option disabled="disabled" selected="selected">Rack Name</option>
        <?php
            $r = mysqli_query($conn, "SHOW TABLES WHERE Tables_in_network Like 'rack%'"); 
            while($row=mysqli_fetch_assoc($r)){
                echo "<option value=".$row['Tables_in_network'].">".$row['Tables_in_network']."</option>";
            }
        ?>
        <option value="no_rack">Not in Rack</option>
        </select>
    </td>
</tr>
<tr>
    <th>Location</th>
    <td>
        <select id="location" name="location" onchange="window.selectrack()">
        <option disabled="disabled" selected="selected">Location</option>                           
        </select>
    </td>
</tr>
<tr>
    <th>Rack Number</th>
    <td>
        <select id="rackno" name="rackno" onchange="window.selectpduunit()">
        <option disabled="disabled" selected="selected">Rack Number</option>        
        </select>
    </td>
</tr>
<tr>
    <th>Rack Unit Location</th>

    <td>
        <select name="rackunit" id="rackunits">
        <option disabled="disabled" selected="selected">Rack Unit Number</option>
        </select>
    </td>
</tr>

这些onchange函数在以下Javascript文件中定义:

代码语言:javascript
复制
function loadLocation(){    
var formName = 'switch';
var rackname = document[formName]['rack_name'].value;

var xmlhttp = null;
if(typeof XMLHttpRequest != 'udefined'){
    xmlhttp = new XMLHttpRequest();
}else if(typeof ActiveXObject != 'undefined'){
    xmlhttp = new ActiveXObject('Microsoft.XMLHTTP');
}else{
    throw new Error('You browser doesn\'t support ajax');           
}
xmlhttp.open('GET', 'load_location.php?rack='+rackname, true);
xmlhttp.onreadystatechange = function (){
    if(xmlhttp.readyState == 4)
        window.insertLocation(xmlhttp);
};
xmlhttp.send(null);
}

function insertLocation(xhr){
    if(xhr.status == 200){
    document.getElementById('location').innerHTML = xhr.responseText;
    }else{
    throw new Error('Server has encountered an error\n'+'Error code = '+xhr.status);
    }
}

function selectrack(){    
    var formName = 'switch';
    var rackname = document[formName]['rack_name'].value;
    var location = document[formName]['location'].value; 
    var xmlhttp = null;
    if(typeof XMLHttpRequest != 'undefined'){
        xmlhttp = new XMLHttpRequest();
    }else if(typeof ActiveXObject != 'undefined'){
        xmlhttp = new ActiveXObject('Microsoft.XMLHTTP');
    }else {
        throw new Error('You browser doesn\'t support ajax');           
    }
    xmlhttp.open('GET', 'select_rack_number.php?location='+location+'& rack='+rackname, true);  
        xmlhttp.onreadystatechange = function (){
        if(xmlhttp.readyState == 4)
             window.insertrackno(xmlhttp);
     };
     xmlhttp.send(null);
 }

function insertrackno(xhr){
     if(xhr.status == 200){
        document.getElementById('rackno').innerHTML = xhr.responseText;
     }else{
        throw new Error('Server has encountered an error\n'+'Error code = '+xhr.status);
     }
 }

 function selectrackunit(){    
     var formName = 'switch';
     var rackname = document[formName]['rack_name'].value;
     var location = document[formName]['location'].value; 
     var rackno = document[formName]['rackno'].value; 
     var xmlhttp = null;
    if(typeof XMLHttpRequest != 'udefined'){
        xmlhttp = new XMLHttpRequest();
    }else if(typeof ActiveXObject != 'undefined'){
        xmlhttp = new ActiveXObject('Microsoft.XMLHTTP');
    }else{
    throw new Error('You browser doesn\'t support ajax');
    }
    xmlhttp.open('GET', 'select_rack_unit.php?location='+location+'&rack='+rackname+'&rackno='+rackno, true);   
        xmlhttp.onreadystatechange = function (){
        if(xmlhttp.readyState == 4)
            window.insertrackunit(xmlhttp);
     };
    xmlhttp.send(null);
 }

 function selectpduunit(){    
    var formName = 'switch';
    var rackname = document[formName]['rack_name'].value;
    var location = document[formName]['location'].value; 
    var rackno = document[formName]['rackno'].value; 
    var xmlhttp = null;
    if(typeof XMLHttpRequest != 'udefined'){
        xmlhttp = new XMLHttpRequest();
    }else if(typeof ActiveXObject != 'undefined'){
         xmlhttp = new ActiveXObject('Microsoft.XMLHTTP');
    }else{
         throw new Error('You browser doesn\'t support ajax');
    }
     xmlhttp.open('GET', 'select_pdu_unit.php?location='+location+'&rack='+rackname+'&rackno='+rackno, true);   
         xmlhttp.onreadystatechange = function (){
         if(xmlhttp.readyState == 4)
             window.insertpduunit(xmlhttp);
     };
     xmlhttp.send(null);
 }

function insertrackunit(xhr){
    if(xhr.status == 200){
        document.getElementById('rackunits').innerHTML = xhr.responseText;
    }else{
        throw new Error('Server has encountered an error\n'+'Error code = '+xhr.status);
    } 
}

function insertpduunit(xhr){
    if(xhr.status == 200){
        document.getElementById('rackunits').innerHTML = xhr.responseText;
     }else{
         throw new Error('Server has encountered an error\n'+'Error code = '+xhr.status);
     } 
 }

下面是php文件中的代码,它似乎不适用于selectpduunit函数:

代码语言:javascript
复制
<?php
require 'includes/opendb.php';  
if(isset($_GET['location']) && ($_GET['rack']) && ($_GET['rackno']) )
{      
    $b = $_GET['location'];
    $e = $_GET['rack'];
    $d = $_GET['rackno'];
    $first_unit='1';
    $explode=explode('-',$e);
    $last_unit=$explode[1];
    var_dump($b);       
    var_dump($e);       
    var_dump($d);
    var_dump($explode);

        while($first_unit<='4'){ //While Loop creates port columns in new table for each port on PDU.
            if('10' > $count){
                $column [] = '`PDU-0'.$first_unit.'`,'; //Storing port number as string in array."`port-0".$count."` varchar (255) NOT NULL";
            }else{
                $column [] = '`'.'PDU-'.$first_unit.'`'.',';
            }
            ++$first_unit;

        }
        $empty = '';
        foreach($column as $c){
            $empty = $empty.$c; 
        }
        //$empty = rtrim($empty2, ",");

    $select="SELECT $empty FROM `$e` WHERE location = '$b' AND `Rack-Number` = '$d'";       
     var_dump($select); // Outputs the above generated MySQL string
    if(!mysqli_query($conn,$select)){
        die("Error".mysqli_error($conn));
    }else{
        $r = mysqli_query($conn,$select);
    }
    $unit_1 = '1';
    while ('4' >= $unit_1){
        if($unit_1 <'10'){
            $column1[] ='PDU-'.'0'.$unit_1;
        } else{
            $column1[] ='PDU-'.$unit_1;
        }
        ++$unit_1;
    }
    //var_dump($column1); // Outputs the above generated strings. The string should be column names.

    $rackunit ='';
    while($row = mysqli_fetch_assoc($r))  {
        if($e == 'no_rack' || $e == 'vm_rack'){
            //$rackunit =$rackunit.'<option value="'.$row["Unit"].','."Unit".'">'.'('."Unit".')'.' '.$row["Unit"].'</option>';      
            echo "fail";
        }else{
            foreach($column1 as $c1){
            $rackunit =$rackunit.'<option value="'.$row["$c1"].','.$c1.'">'.'('.$c1.')'.' '.$row["$c1"].'</option>';            
            }
        }   
    } 
    var_dump($rackunit);
    if($rackunit == '')
        echo 'An Error has occurred. Dropdown Menu is not being populated.';
    else
        ?>      
            <select name="rackunit" id="rackunit">
                <option disabled="disabled" selected="selected">Rack Unit Number</option>
                <?php echo $rackunit ?> 
                <option value="1">Test</option>
            </select>
        <?php  

}   

?>

知道问题出在哪里吗?

EN

回答 1

Stack Overflow用户

发布于 2016-11-11 20:48:55

您的代码中有一个打字错误。在方法中,selectpduunit以及selectrackunit

代码语言:javascript
复制
 if(typeof XMLHttpRequest != 'udefined'){

它应该是相反的

代码语言:javascript
复制
 if(typeof XMLHttpRequest != 'undefined'){

可能是因为您无法创建新的XMLHttpRequest对象。试试看。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40546889

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档