2012-01-12 79 views
0

有三個選擇框,首先「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與我的頁面不在同一個文件夾中,但我確實知道該文件已保存在另一個文件夾中,這就是爲什麼我的郵寄呼叫不起作用...

回答

0

我並不積極,但我會想象那是因爲你在device_sel上有一個onChange效果,然後當你使用來自customer_sel的onChange調用填充它時,它將改變它的默認值。嘗試從$('#device_sel').change(function()解除您的第二次更改並查看是否有同樣的問題。 (我很抱歉,如果我完全誤解了你的問題)

相關問題