2016-06-14 2 views
0

Я новичок в 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».

Я провел некоторое исследование в Интернете, но все еще не могу понять. Не могли бы вы любезно указать мне на правильное направление решения этой проблемы?

Спасибо!

+0

Ваш обработчик AJAX должен возвращать только содержимое, которое требуется для вставить в 'txtHint.innerHTML'. Таким образом, вы можете избавиться от тегов '', '' и '' для стартеров. –

ответ

0

Заменить функцию SelectCity() из файла getprinters.php в файл iisstart.htm .remove HTML, теги сценария из getprinters.php

<?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); 
?> 

Также добавьте <div id="txtHint"></div> в файл iisstart.htm

+0

Ничего себе это так здорово! он работает мгновенно Zakhefron. Спасибо за вашу помощь и переместили меня вперед по проекту :-) – user6465457

+0

Новая проблема теперь: после перемещения функции SelectCity() в файл iisstart.htm я не могу использовать эту функцию для извлечения данных из базы данных на основе выбора пользователь делает. Я надеялся вставить строки, подобные приведенным ниже, чтобы узнать, какой вариант пользователь делает из списка выбора: – user6465457

+0

document.write («hello !!»); var x = document.getElementById ("city"); var i = x.selectedIndex; document.getElementById ("demo"). InnerHTML = x.options [i] .text; – user6465457