Quote:
Originally Posted by Cc_Cc_Cc
Hi,
ich wollte eine Select box haben wo man seinen Stadtnamen eingeben muss. Dann sollte die Stadt angezeigt werden in der Select-Box was jedoch bei mir nicht passiert. Habe ich irgendwas falsch gemacht oder etwas vergessen?
Hier ist meine Seite, dort könnt ihr euch ein Überblick erschaffen der Select-Box
[Only registered and activated users can see links. Click Here To Register...]
Hier ist die Api
[Only registered and activated users can see links. Click Here To Register...]
Code:
enter_city.php
HTML Code:
<script src="../js/jquery.min.js"></script>
<script src="../js/select2.min.js"></script>
<link rel="stylesheet" href="../css/select2.min.css">
<select class="js-data-example-ajax">
</select>
<script type="text/javascript">
$(document).ready(function() {
$('.js-data-example-ajax').select2({
width:'100%',
ajax: {
url: 'api.php',
dataType: 'json',
delay: 250,
processResults: function (data) {
return {
results: data
};
},
cache: true
}
});
});
</script>
Api.php
PHP Code:
<?php header("Content-Type: application/json; charset=UTF-8"); require_once __DIR__ . '/../config/connect.php'; if($stmt = $pdo->prepare("SELECT * FROM `dataset` WHERE `city` LIKE :city LIMIT 500;")) { $param = ["city" => "{$_GET['q']}%"]; $stmt->execute($param); $ct = $stmt->rowCount(); $prod = array(); $prod['records'] = array(); if($ct > 0) { while($row = $stmt->fetch(PDO::FETCH_ASSOC)) { extract($row); $product = array( 'id' => $row['primary_key'], 'zipcode' => $row['zipcode'], 'city' => $row['city'], 'state' => $row['state'], 'community' => $row['community'] ); array_push($prod["records"], $product); } http_response_code(200); echo json_encode($prod, JSON_UNESCAPED_UNICODE); } else { echo json_encode(array("Message" => "City not found")); } } ?>
|
Du solltest bevor du so etwas fragst erstmal die grundlegenden Sachen überprüfen...
Du hast in deinem css Ordner eine select2.min.js Datei statt einer select2.min.css liegen.
Wenn ich diese nun manuell über
Code:
$('body').append('<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.3/css/select2.css">')
einbinde, wird der Input schon einmal richtig dargestellt.
Allerdings funktioniert dieser nicht korrekt da deine processResults beim inizialiseren des select2 nicht korrekt ist.
Du solltest die Dokumentation von select2 mal durchlesen was genau dort zurück gegeben werden muss.
P.s.
Wenn du folgendes einfach mal in die Konsole eingibst und dann im Input suchst, siehst du in der Konsole das auch richtig gesucht wird...
Nur das Json ist u.a. falsch aufgebaut ;)
Code:
$('body').html("<link rel='stylesheet' type='text/css' href='https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.5/css/select2.min.css'><select class='js-data-example-ajax'></select><script>$(document).ready(function() { $('.js-data-example-ajax').select2({ width:'100%', ajax: { url: 'https://wantdatas.eu/pages/api.php', dataType: 'json', delay: 250, processResults: function (data) { console.log(data); return { results: data.records }; }, cache: true } });});</script>")