2017-09-08 27 views
0

Ajaxを使用して選択オプション入力の値を別のページPHPに渡し、データベースを取得して選択オプションにデータを取得しようとしています。しかし、私の問題は、セカンドセレクトオプションに何も表示されないことです。ajaxを使用して別のページPHPに値を渡す方法

国番号1、国番号2、国番号3、国番号4、国番号1,2,3,4の国番号があります。

私は、getdata.phpに国ID(cid)を渡しています。都市a、都市b、都市cなどを含むCityのデータベースを照会し、都市のデータをAjaxを使用してselectオプションに取得します。

国を選択すると、都市選択オプションを動的に変更する必要があります。ここ

は私のデータベース構造である:ここで

Country.db

enter image description here

City.db

enter image description here

は私のスクリプトです:

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

結果は次のようにされている。

enter image description here

この問題を解決するにはどうすればよいですか?

+0

をこのWebアプリケーションをデバッグするためにChromeデベロッパーツールを使用してください。 DevToolsにアクセスするには、Google Chromeでウェブページまたはウェブアプリを開きます。ブラウザウィンドウの右上にあるChromeメニューChromeメニューを選択し、[ツール]> [デベロッパーツール]を選択します。またはF12を押すだけです。 [コンソール]タブをクリックしてエラーメッセージを表示し、[ネットワーク]タブをクリックしてajax呼び出しをデバッグします。 D – aldo

+0

@aldoが言ったことは良いアドバイスですが、SQLインジェクションの脆弱性を認識する必要もあります。何らかの検証、エスケープ、型キャストなど何もせずに、投稿データをクエリに直接使用するべきではありません。 –

+0

@aldoは:$のgetId(dropdown.php:40)で が定義されていません。エラーがキャッチされない**にReferenceErrorが言っHTMLSelectElement.onchangeで (dropdown.php:11) のgetId @ dropdown.php:40 のonchangeドロップダウン@ .php:11 ** –

答えて

1

AJAX成功ハンドラ内セレクタは識別子ではなく、文字列でなければなりません:

success:function(data){ 
    $('#cityList').html(data); 
} 
+0

thats右。ありがとう –

関連する問題