Я новичок в PHP и JavaScript, и у меня есть проблема с программированием, которую я не могу решить и вам нужна помощь. У меня есть два файла:PHP-файл может генерировать правильный вывод, но не при вызове html-файлом
iisstart.htm
<html>
<head>
<script>
function showPrinters(str) {
if (str == "") {
document.getElementById("txtHint").innerHTML = "";
return;
} else {
if (window.XMLHttpRequest) {
// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp = new XMLHttpRequest();
} else {
// code for IE6, IE5
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
document.getElementById("txtHint").innerHTML = xmlhttp.responseText;
}
};
xmlhttp.open("GET","getprinters.php?q="+str,true);
xmlhttp.send();
}
}
</script>
</head>
<body>
<form>
<select name="printers" onchange="showPrinters(this.value)">
<option value="">Select a state:</option>
<option value="AZ">Arizona</option>
<option value="CA">California</option>
<option value="HI">Hawaii</option>
<option value="NV">Nevada</option>
<option value="OR">Oregon</option>
<option value="UT">Utah</option>
<option value="WA">Washington</option>
</select>
</form>
<br>
и другой файл: getprinters.php
<!DOCTYPE html>
<html>
<body>
<?php
$q = strval($_GET['q']);
$con = new mysqli('localhost','root','w','w');
if (!$con) {
die('Could not connect: ' . mysqli_error($con));
}
mysqli_select_db($con,"ajax_demo");
$sql="SELECT DISTINCT City FROM Printers WHERE ST = '".$q."'";
$result = mysqli_query($con,$sql);
echo "<select id='city' onchange='SelectCity()'>";
echo "<option value=''>Select Your City</option>";
while($row = mysqli_fetch_array($result)) {
echo "<option value='" . $row['City'] . "'>". $row['City']. "</option>";
}
echo "</select>";
mysqli_close($con);
?>
<script>
function SelectCity()
{
document.write("Hello");
}
</script>
</body>
</html>
Вот проблема:
Когда я бегу getprinters .php напрямую, я получаю вывод «Привет» успешно на нас bpage после того, как я сделаю выбор из опций выбора (список успешно сгенерирован из вывода базы данных MySQL). Однако, когда я запускаю iisstart.htm, который вызывает getprinter.php и делает выбор из списка опций, функция onchange = 'SelectCity() не будет работать - нет вывода «Hello».
Я провел некоторое исследование в Интернете, но все еще не могу понять. Не могли бы вы любезно указать мне на правильное направление решения этой проблемы?
Спасибо!
Ваш обработчик AJAX должен возвращать только содержимое, которое требуется для вставить в 'txtHint.innerHTML'. Таким образом, вы можете избавиться от тегов '', '' и '' для стартеров. –