2012-01-12 8 views
0

3つのセレクトボックスがあり、最初は「device_sel」と「prob_sel」が無効になります。最初の選択ボックスから値を選択すると、 "customer_sel"は$ .postを使用してdevice_selに値を設定します。私の問題は、私が "device_sel"の値を選択してから "prob_sel"が入力されたときに同じことをすることです。私はprob_selを投入しようとすると、$ .postプロセスで表示されないエラーがあると思います。私がdevice_selの値を変更(または最初に選択)すると、prob_selは無効になったままになり、何も起こりません。最初のボックスの選択した値を変更した後、2番目と3番目のセレクトボックスに値を設定します。

誰かが間違いを見つけたり、タイプミスしたりして、これを理解して何かを見つけることができませんでしたか?

私の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は私のページと同じフォルダにないが、私はファイルが別のフォルダに保存されていることを知っていたので、なぜ私のポストコールdidnt仕事...

答えて

0

私は肯定的ではないが、これは、device_selにonChangeエフェクトがあるため、onChangeコールをcustomer_selから入力したときにそのデフォルト値を変更しているためです。 2番目の変更を$('#device_sel').change(function()から解除し、同じ問題があるかどうかを確認してください。 (あなたが持っている問題を完全に誤解した場合はお詫びします)

関連する問題