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リクエストで
んプリペアドステートメント?ちょうど連結しますか?ここに大きなセキュリティ上の欠陥があることをご存知ですか? –
@DenysSéguretコメントはエコーする価値があります。あなたは本当にSQLインジェクション攻撃を読んで、なぜ生のユーザーデータを取るコードを書く/使用してはならないのかを知りたいのです。それはウェブサイトがハッキングされ、引き継がれる方法です。 –
これは、あなた自身のデバッグを開始する必要があると述べています。ブラウザのコンソールを使用して、[ネットワーク]タブを確認します。戻ってくるデータを調べ、エラーがJavaScript側かPHP側かを確認します。そこにエラーがリストされているかどうかを確認してください。 –