簡體   English   中英

HTML表單輸入取決於以前使用javascript和php進行的表單輸入,無法正常工作

[英]HTML form input dependent on previous form input with javascript and php, not working

我一直在嘗試使用HTML Javascript PHP和MYSQL創建一些選擇輸入,這些輸入依賴於html表單中的先前輸入。 這已經與我以前的頁面一起工作了,所以在創建這個新頁面時,我只是在javascript文件中定義了一個新函數,並創建了一個新的php文件來向其發送數據,因為我想為最后一個選擇框輸出不同的內容表格。

即使我鏡像了先前的函數,並且php文件僅更改了一些小細節,但我看不到上一次下拉選擇所創建的任何選項,而且似乎沒有任何錯誤,實際上是空白的php頁面,沒有任何錯誤正在通過,我不確定為什么會這樣。

這是我的表單的屏幕截圖,您可以看到“機架單元位置”選項沒有創建任何選項,並且為空白,但其他選擇框可以正常工作:

表格截圖

這是HTML表單的一部分,因此我希望機架單元的位置取決於機架號,機架號取決於位置,而機架號又取決於機架。

<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文件中定義:

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函數的代碼:

<?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  

}   

?>

知道是什么問題嗎?

您的代碼中有一個錯字。 在方法中,selectpduunit和selectrackunit

 if(typeof XMLHttpRequest != 'udefined'){

應該改為

 if(typeof XMLHttpRequest != 'undefined'){

可能是因為您無法創建新的XMLHttpRequest對象。 試試看。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM