Ajaxを使用して選択オプション入力の値を別のページPHPに渡し、データベースを取得して選択オプションにデータを取得しようとしています。しかし、私の問題は、セカンドセレクトオプションに何も表示されないことです。ajaxを使用して別のページPHPに値を渡す方法
国番号1、国番号2、国番号3、国番号4、国番号1,2,3,4の国番号があります。
私は、getdata.phpに国ID(cid)を渡しています。都市a、都市b、都市cなどを含むCityのデータベースを照会し、都市のデータをAjaxを使用してselectオプションに取得します。
国を選択すると、都市選択オプションを動的に変更する必要があります。ここ
は私のデータベース構造である:ここで
Country.db
City.db
は私のスクリプトです:
dropdown.phpドロップダウンから
<?php
require_once "connection.php";
?>
<html>
<head>
<title>Dropdown ajax</title>
</head>
<body>
<div class="country" >
<label>Country</label>
<select name="country" onchange="getId(this.value);">
<option value=""> -- Select Country -- </option>
<!-- populate value using php -->
<?php
$query = "SELECT * FROM country";
$result = mysqli_query($con,$query);
//loop
foreach ($result as $country) {
?>
<option value="<?php echo $country["cid"]; ?>"> <?php echo $country["country"]; ?> </option>
<?php
}
?>
</select>
</div>
<div class="city">
<label>City</label>
<select name="city" id="cityList">
<option value=""></option>
</select>
</div>
<script src="jquery-3.2.1.min"></script>
<script type="text/javascript">
function getId(val){
// ajax function
$.ajax({
type:"POST",
url:"getdata.php",
data:"cid="+val,
success:function(data){
$(#cityList).html(data);
}
});
}
</script>
</body>
</html>
は、私は、Ajaxを使用してgetdata.phpに過去CIDにしようと、ドロップdown.php内部の選択オプション
getdata.phpにデータベースを取得しています
<?php
require_once "connection.php";
if(!empty($_POST["cid"])){
$cid = $_POST["cid"];
$query = "SELECT * FROM city WHERE cid = $cid";
$result = mysqli_query($con,$query);
foreach ($result as $city) {
?>
<option value="<?php echo $city["cityId"];?>"><?php echo $city["city"];?></option>
<?php
}
}
?>
ここに私のconnection.php
<?php
$con = mysqli_connect("localhost","root","admin","dropdowndb");
//check connection
if(mysqli_connect_errno()){
echo "Failed to connect :".mysqli_connect_errno();
}
?>
結果は次のようにされている。
この問題を解決するにはどうすればよいですか?
をこのWebアプリケーションをデバッグするためにChromeデベロッパーツールを使用してください。 DevToolsにアクセスするには、Google Chromeでウェブページまたはウェブアプリを開きます。ブラウザウィンドウの右上にあるChromeメニューChromeメニューを選択し、[ツール]> [デベロッパーツール]を選択します。またはF12を押すだけです。 [コンソール]タブをクリックしてエラーメッセージを表示し、[ネットワーク]タブをクリックしてajax呼び出しをデバッグします。 D – aldo
@aldoが言ったことは良いアドバイスですが、SQLインジェクションの脆弱性を認識する必要もあります。何らかの検証、エスケープ、型キャストなど何もせずに、投稿データをクエリに直接使用するべきではありません。 –
@aldoは:$のgetId(dropdown.php:40)で が定義されていません。エラーがキャッチされない**にReferenceErrorが言っHTMLSelectElement.onchangeで (dropdown.php:11) のgetId @ dropdown.php:40 のonchangeドロップダウン@ .php:11 ** –