Witam,
Nie mogę zrozumieć dlaczego skrypt w jednym wypadku działa a w innym nie.
Projekt składa się z pliku index.php oraz folderów "index", css i js.
Zawartość folderu index to pliki "wyszukiwarkaMain.php oraz plik searchCity.php
Zawartość folderu css to plik hamburger.css
Zawartość folderu js to javaScriptCity.js
Zasadniczym celem programu jest podpowiadanie nazw miejscowości (autocomplete).
Kod zacznę od javaScriptCity.js
$(document).ready(function(){
$('#city').keyup(function(){
var query = $(this).val();
if(query != '')
{
$.ajax({
url:"index/searchCity.php",
method:"POST",
data:{query:query},
success:function(data)
{
$('#cityList').fadeIn();
$('#cityList').html(data);
}
});
}
});
$(document).on('click', 'li', function(){
$('#city').val($(this).text());
$('#cityList').fadeOut();
});
});
plik hamburger.css
#menuToggle
{
display: block;
position: absolute;
top: 50px;
left: 50px;
z-index: 1;
-webkit-user-select: none;
user-select: none;
}
#menuToggle input
{
display: block;
width: 40px;
height: 32px;
position: absolute;
top: -7px;
left: -5px;
cursor: pointer;
opacity: 0; /* hide this */
z-index: 2; /* and place it over the hamburger */
-webkit-touch-callout: none;
}
#menuToggle span
{
display: block;
width: 33px;
height: 4px;
margin-bottom: 5px;
position: relative;
background: #cdcdcd;
border-radius: 3px;
z-index: 1;
transform-origin: 4px 0px;
transition: transform 0.5s cubic-bezier(0.77,0.2,0.05,1.0),
background 0.5s cubic-bezier(0.77,0.2,0.05,1.0),
opacity 0.55s ease;
}
#menuToggle span:first-child
{
transform-origin: 0% 0%;
}
#menuToggle span:nth-last-child(2)
{
transform-origin: 0% 100%;
}
#menuToggle input:checked ~ span
{
opacity: 1;
transform: rotate(45deg) translate(-2px, -1px);
background: #232323;
}
#menuToggle input:checked ~ span:nth-last-child(3)
{
opacity: 0;
transform: rotate(0deg) scale(0.2, 0.2);
}
#menuToggle input:checked ~ span:nth-last-child(2)
{
transform: rotate(-45deg) translate(0, -1px);
}
.pozycjaHanburger{
position: absolute;
margin: 5px;
}
Plik wyszukiwarkaMain.php
<div class = "citySearch">
<input type="text" name="city" id="city" class="form-control" placeholder="miejscowość" />
</div>
plik searchCity.php
<?php
$connect = mysqli_connect("localhost", "root", "", "nieruchomosci");
$connect->query('SET NAMES utf8');
if(isset($_POST["query"]))
{
$output = '';
$query = "SELECT * FROM miejscowosci WHERE city LIKE '%".$_POST["query"]."%'";
$result = mysqli_query($connect, $query);
$output = '
<ul class="list-unstyled">';
if(mysqli_num_rows($result) > 0)
{
while($row = mysqli_fetch_array($result))
{
$output .= '
<li>'.$row["CityFullName"].'
</li>';
}
}
else
{
$output .= '
<li>Przykro mi, ale takiej miejscowości nie ma w naszej bazie danych.
</li>';
}
echo $output;
}
?>
i na zakończenie plik index.php
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> function wyszukiwarka() {
var hr = new XMLHttpRequest();
var url = "index/wyszukiwarkaMain.php";
hr.open("POST", url, true);
hr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
hr.onreadystatechange = function() {
if(hr.readyState == 4 && hr.status == 200) {
var return_data = hr.responseText;
document.getElementById("wyszukiwarkaMain").innerHTML = return_data;
}
}
hr.send();
document.getElementById("wyszukiwarkaMain").innerHTML = "processing...";
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script> <link href="css/hamburger.css" rel="stylesheet" type="text/css" /> <div class="pozycjaHanburger"> <input type="checkbox" onclick="wyszukiwarka()"/> <div id="wyszukiwarkaMain"></div> <?php
require "index/wyszukiwarkaMain.php";
?>
<script type="text/javascript" src="js/javaScriptCity.js"></script>
i teraz gdzie tkwi problem.
fragmentem pliku index.php jest:
<?php
require "index/wyszukiwarkaMain.php";
?>
jeżeli wyszukiwarkaMain.php "załaduję" w ten sposób to wszystko gra. Jednak "wyszukiwarka zajmuje zbyt dużo miejsca więc chciałbym by użytkownik jak będzie chciał to sam ją otworzy klikając w "hamburgera". Wyszukiwarka oczywiście się otwiera jednak funkcja podpowiadania nazw miejscowości wówczas nie działa.
Ktoś podpowie?
Z góry dziękuję