2017-12-12 16 views
0

opera_houseという名前のデータベースがroomというフィールドとroomというフィールドを持つroomというテーブルを持っています。私はroom_nameのものを表示したいと思います。MySQLクエリ結果がAJAXを使用して表示されない

利用可能な部屋のテキストは消えますが、私のコードはエコーするとMySQLクエリのみを表示しますが、データベースを検索することになっているかどうかはわかりません。

これは私のスクリプトコードです:

<script src="https://code.jquery.com/jquery-3.2.1.min.js"></script> 
<script type="text/javascript"> 
    function showRoom(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 (this.readyState === 4 && this.status === 200) { 
        document.getElementById("txtHint").innerHTML = this.responseText; 
       } 
      }; 
      xmlhttp.open("GET","ajax_events.php?q="+str,true); 
      xmlhttp.send(); 
     } 
    } 

これは私のhtmlです:

<body> 
    <form> 
     <input type="text" name="room" onkeyup="showRoom(this.value)"> 
    </form> 
    <br> 
    <div id="txtHint"><b>Available Room...</b></div> 
</body> 

これは私のPHPです:

<?php 
    include('dbconnect.php'); 
    $q = intval($_GET['q']); 

    mysqli_select_db($connection,"opera_house"); 
    $sql="SELECT room_name FROM room WHERE capacity >= '".$q."'"; 
    echo $sql; 
    $result = mysqli_query($connection,$sql); 

    while($row = mysqli_fetch_array($result)) { 
     echo "<td>" . $row['room_name'] . "</td>"; 
    } 
?> 

私のPHPファイルが呼び出されますajax_events.php

私のdbconnect.phpは、私がこのデータベースに接続するために常時使用しているものです。

本当に助けていただければ幸いです。

+1

エラーが表示されますか? – urfusion

+0

ブラウザからphpファイルを実行して、コードが返す内容を確認してください。 –

+0

すでにjQueryを埋め込んでいますが、ネイティブなXMLHttpRequest実装のポーズで動作するすべての問題は解決しますか?冗談だろ。 http://api.jquery.com/jquery.ajax/このようにしてください... – CBroe

答えて

0

私はjqueryを使用して回答を提案します。あなたの質問でそれを埋め込んだが、あなたは...

の説明を、それを使用していない:あなたはそれ以外の場合は何もセレクタtxtHintを埋め、パラメータstrが定義されている場合にのみ"q"で次のURL ajax_events.phpを呼び出します。この構成により

AJAX

if (str != "") { 
    $.ajax({ 
    type: 'GET', 
    url: 'ajax_events.php', 
    dataType: 'JSON', 
    data : { 
     q: str 
    } 
    }).done(function (data) { 
    $('#txtHint').text = data; 
    }).fail(function() { 
    alert('Fatal error'); 
    }) 
} else { 
    $('#txtHint').text = ''; 
} 

、あなたのサーバー側のコードでecho json_encodeで結果を返すことが重要です。

PHP

<?php 
    include('dbconnect.php'); 
    $q = intval($_GET['q']); 

    mysqli_select_db($connection, "opera_house"); 
    $sql = 'SELECT room_name FROM room WHERE capacity >= '.$q; // Some corrections 
    $result = mysqli_query($connection, $sql); 

    $return = ''; 
    while($row = mysqli_fetch_array($result)) { 
    $return .= '<td>' . $row["room_name"] . '</td>'; 
    } 
    echo json_encode($return); // Return Json to ajax 
?> 
0

JSのことを考えていますが、それは大丈夫です。私は問題がPHPコードにあると思う。これを試してみてください。

<?php 
    include('dbconnect.php'); 
    $q = intval($_GET['q']); 

    mysqli_select_db($connection,"opera_house"); 
    $sql="SELECT room_name FROM room WHERE capacity >= " . $q; 

    $result = mysqli_query($connection,$sql); 

    if (!$result) { 
     echo mysqli_error(); 
     exit(); 
    } // this is to do debugging. remove when you get it fixed 

    $ret = ""; //variable to hold return string 
    while($row = mysqli_fetch_array($result)) { 
     $ret .= "<td>" . $row['room_name'] . "</td>"; 
    } 

echo $ret; 
関連する問題