2016-05-24 17 views
1

私は、データベースフィールド(名前)で検索するオートコンプリート機能を持っています。Javascriptのオートコンプリート機能が空白で動作しない

フィールドが「john」で、「joh」というオートコンプリートを入力しても問題ありません。 しかし フィールドがjohn marshallで、「joh」と入力した場合、オートコンプリートは機能しません。

アイデア?本当にありがとう。

私のコード:

のindex.php

<script src="http://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script> 
    <script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.2/jquery-ui.min.js"></script> 
    <link href="css/jqueryui.css" type="text/css" rel="stylesheet"/> 
    <script> 
     $(document).ready(function(){ 
      $("#matricula").autocomplete({ 
       source: "searchalumno.php", 
       minLength: 2 
      }); 

      $("#matricula").focusout(function(){ 
       $.ajax({ 
        url:'alumno.php', 
        type:'POST', 
        dataType:'json', 
        data:{ matricula:$('#matricula')} 
       }).done(function(respuesta){ 
        $("#nombre").val(respuesta.nombre); 
        $("#paterno").val(respuesta.paterno); 
        $("#materno").val(respuesta.materno); 
       }); 
      });       
     }); 
    </script> 

</head> 
<body> 

    <form> 
     <label for="matricula">Matricula:</label> 
     <input type="text" id="matricula" name="matricula" value=""/> 
     <label for="nombre">Nombre:</label> 
     <input type="text" id="nombre" name="nombre" value=""/> 
     <label for="paterno">Paterno:</label> 
     <input type="text" id="paterno" name="paterno" value=""/> 
     <label for="materno">Materno:</label> 
     <input type="text" id="materno" name="materno" value=""/> 
    </form> 
</body> 

alumno.php:?

<?php 

$conexion = new mysqli('servidor','usuario','password','basedatos',3306); 
$matricula = $_POST['matricula']; 
$consulta = "select nombre, paterno, materno FROM tblalumno WHERE matricula = '$matricula'"; 

$result = $conexion->query($consulta); 

$respuesta = new stdClass(); 
if($result->num_rows > 0){ 
    $fila = $result->fetch_array(); 
    $respuesta->nombre = $fila['nombre']; 
    $respuesta->paterno = $fila['paterno']; 
    $respuesta->materno = $fila['materno'];  
} 
echo json_encode($respuesta); 

>

searchalumno:

<?php 
$conexion = new mysqli('servidor','usuario','password','basedatos',3306); 
$matricula = $_GET['term']; 
$consulta = "select matricula FROM tblalumno WHERE matricula LIKE '%$matricula%'"; 

$result = $conexion->query($consulta); 

if($result->num_rows > 0){ 
    while($fila = $result->fetch_array()){ 
     $matriculas[] = $fila['matricula'];  
    } 
    echo json_encode($matriculas); 
} 
?> 
あなたのAjaxリクエストで
+1

んプリペアドステートメント?ちょうど連結しますか?ここに大きなセキュリティ上の欠陥があることをご存知ですか? –

+0

@DenysSéguretコメントはエコーする価値があります。あなたは本当にSQLインジェクション攻撃を読んで、なぜ生のユーザーデータを取るコードを書く/使用してはならないのかを知りたいのです。それはウェブサイトがハッキングされ、引き継がれる方法です。 –

+0

これは、あなた自身のデバッグを開始する必要があると述べています。ブラウザのコンソールを使用して、[ネットワーク]タブを確認します。戻ってくるデータを調べ、エラーがJavaScript側かPHP側かを確認します。そこにエラーがリストされているかどうかを確認してください。 –

答えて

0

、代わりに入力オブジェクトの入力値を使用します。

$.ajax({ ... data:{ matricula: $('#matricula').val() } }) 
関連する問題