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仕事...