更改第一个框的选定值后填充第二个和第三个选择框

问题描述:

有三个选择框,首先“device_sel”和“prob_sel”被禁用。当我从第一个选择框中选择值时,“customer_sel”我使用$ .post来填充device_sel。我的问题是当我在“device_sel”中选择值,然后“prob_sel”填充时,我该做什么。我认为有一些错误,当我尝试填充prob_sel时,我在$ .post过程中看不到。当我在device_sel中更改(或第一次选择)值时,prob_sel保持开始禁用状态,并且没有任何反应。更改第一个框的选定值后填充第二个和第三个选择框

有人可以发现错误或typeo,一直试图小时来弄清楚,并找不到任何东西。

我的javascript:

<script type="text/javascript"> 
    $(document).ready(function() 
    { 
     $('#device_sel').attr('disabled', true); 
     $('#prob_sel').attr('disabled', true); 


     $('#customer_sel').change(function() 
     { 
      var cid = $('#customer_sel').attr("value"); 
      $.post("get_customers_devices.php", {cid:cid}, function(data) 
      { 
       $('#device_sel').attr('disabled', false); 
       $('#device_sel').html(data); 
      }); 
     }); 

     $('#device_sel').change(function() 
     { 
      var did = $('#device_sel').attr("value"); 
      jQuery.post("get_device_problems.php", {did:did}, function(data) 
      { 
       $('#prob_sel').attr('disabled', false); 
       $('#prob_sel').html(data); 
      }); 
     }); 

    }); 
</script> 

get_customers_devices.php:

<?php 

include "FillSelect.class.php"; 

echo $fill->FillDeviceSelect($getdata->GetCustomersDevice($_POST['cid'])); 

?> 

get_device_problems.php:

<?php 

include "FillSelect.class.php"; 

echo $fill- >FillProblemSelect($getdata->GetDeviceProblems($_POST['did'])) ; 

?> 

GetCustomerDevice和GetDeviceProblems:

function GetCustomersDevice($cid) 
    { 
     try 
     { 
      $db = new PDO('sqlite:base.db') ; 
      $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING); 

      $pquery = $db->prepare("SELECT * FROM Devices WHERE cid=:cid"); 
      $data = array("cid"=>$cid); 
      $pquery -> execute($data) ; 

      $rows = $pquery->fetchAll(); 

      return $rows; 
     } 
     catch(PDOException $e) 
     { 
      echo "Failure: " . $e->getMessage();    
     } 

     $db = NULL; 
    } 

    function GetDeviceProblems($did) 
    { 
     try 
     { 

      $db = new PDO('sqlite:base.db') ; 
      $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING); 

      $pquery = $db->prepare("SELECT * FROM Problems p, Devices d WHERE d.did=:did"); 
      $data = array("did"=>$did); 
      $pquery -> execute($data) ; 

      $rows = $pquery->fetchAll(); 

      return $rows; 
     } 
     catch(PDOException $e) 
     { 
      echo "Failure: " . $e->getMessage();    
     } 

     $db = NULL; 
    } 

最后FillDeviceSelect和FillProblemSelect:

function FillDeviceSelect($data) 
    { 
     $device = '<option value="0">Select option</option>'; 
     foreach($data as $row) 
     { 
      $device.= '<option value="'. $row['did'] .'">'. $row['device_name'] .'</option>'; 
     } 

     return $device; 
    } 

function FillProblemSelect($data) 
    { 
     $problem = '<option value="0">Select option</option>'; 
     foreach($data as $row) 
     { 
      $problem .= '<option value="' . $row['pid'] .'">' . $row['problem'] .'</option>'; 
     } 

     return $problem; 
    } 

解决它。非常非常严重的错误,get_device_problems与我的页面不在同一个文件夹中,但我确实知道该文件已保存在另一个文件夹中,这就是为什么我的邮寄呼叫不起作用...

我并不积极,但我会想象那是因为你在device_sel上有一个onChange效果,然后当你使用来自customer_sel的onChange调用填充它时,它将改变它的默认值。尝试从$('#device_sel').change(function()解除您的第二次更改并查看是否有同样的问题。 (我很抱歉,如果我完全误解了你的问题)