Я смотрю на этот сайт, чтобы сделать несколько выпадающих: Блог Рошана
И большая часть из них работает, у меня просто проблема с третьим выпадающим ящиком.
(Dropdown1: клиенты, Dropdown2: Location, Dropdown3: Zone)
На моей странице до сих пор, если я смотрю на источник, после выбора первого раскрывающегося списка (Client1), второе выпадающее заявление говорит:
<select style="width: 150px;" id="add-event-dialog-location" name="add-event-dialog-location" onchange="getZone(Client1,this.value)">
Это то, что мне нужно, но теперь, когда я нажимаю на один из вариантов во втором раскрывающемся списке, он не помещается через скрипт getZone (). «Zonediv» не меняется, и я не уверен, переживает ли остальное или нет. Если я сам загружу getZone.php и поместил в свои собственные операторы GET в URL-адрес, я получаю результаты, но я не могу получить их на странице, с которой я звоню.
Я, наверное, просто пропустил что-то маленькое, но я так долго смотрел на него, что просто не могу понять.
HTML:
<select style="width: 150px;" name="add-event-dialog-client_name" id="add-event-dialog-client_name" onchange="getLocation(this.value)"> <?php echo "<option selected='selected' disabled='disabled'>-Client Name-</option>"; $result = mysql_query("SELECT DISTINCT client_name FROM spc_clients"); while($row = mysql_fetch_array($result)){ echo "<option value='".$row['client_name']."'>".$row['client_name']."</option>"; } ?> </select> <p id="locationdiv"> <select style="width: 150px;" name="add-event-dialog-location" id="add-event-dialog-location" disabled="disabled"> <option>Select Client First</option> </select> </p> <p id="zonediv"> <select style="width: 150px;" name="add-event-dialog-zone" id="add-event-dialog-zone" disabled="disabled"> <option>Select Location First</option> </select> </p>
Обе функции JS:
function getLocation(client_name) { var strURL="display/getLocation.php?client_name="+client_name; var req = getXMLHTTP(); if (req) { req.onreadystatechange = function() { if (req.readyState == 4) { // only if "OK" if (req.status == 200) { document.getElementById('locationdiv').innerHTML=req.responseText; } else { alert("There was a problem while using XMLHTTP:\n" + req.statusText); } } } req.open("GET", strURL, true); req.send(null); } } function getZone(client_name,location) { var strURL="display/getZone.php?client_name="+client_name+"&location="+location; var req = getXMLHTTP(); if (req) { req.onreadystatechange = function() { if (req.readyState == 4) { // only if "OK" if (req.status == 200) { document.getElementById('zonediv').innerHTML=req.responseText; } else { alert("There was a problem while using XMLHTTP:\n" + req.statusText); } } } req.open("GET", strURL, true); req.send(null); } }
getLocation.php:
<?php include 'connect.php'; $client = $_GET['client_name']; $query="SELECT location FROM spc_clients WHERE client_name='$client'"; $result=mysql_query($query) or die(mysql_error()); ?> <select style="width: 150px;" id="add-event-dialog-location" name="add-event-dialog- location" onchange="getZone(<?=$client?>,this.value)"> <option selected='selected' disabled='disabled'>-Location-</option> <?php while($row = mysql_fetch_array($result)){ echo "<option value='".$row['location']."'>".$row['location']."</option>";} ?> </select>
getZone.php:
<?php include 'connect.php'; $client = $_GET['client_name']; echo $client; $location = $_GET['location']; echo $location; $query="SELECT zone FROM spc_clients WHERE (client_name='$client' && location='$location')"; $result=mysql_query($query) or die(mysql_error()); ?> <select style="width: 150px;" id="add-event-dialog-zone" name="add-event-dialog-zone"> <option selected='selected' disabled='disabled'>-Zone-</option><option><?php while($row = mysql_fetch_array($result)){ echo $row['zone'];} ?> </option> </select>
Попробуйте помещать кавычки вокруг Client1 – без кавычек, javascript считает, что это переменная, и поскольку вы не определили какую-либо переменную Client1, вы получаете сообщение об ошибке. Помещение котировок вокруг него делает его строкой, которую вы хотите передать getZone ().
Попробуйте поместить это в getLocation.php:
<select style="width: 150px;" id="add-event-dialog-location" name="add-event-dialog- location" onchange="getZone('<?=$client?>',this.value)">
Если у кого-либо из ваших имен клиентов есть кавычки в них, вы должны будете убежать от них, см. Здесь, как это сделать: Передайте строку PHP переменной JavaScript (и избегайте новых строк) .