#php #jquery
#php #jquery
Вопрос:
я пытаюсь получить список имен из таблицы MySQL, используя php и функцию автозаполнения jQuery, но я не получаю результата. не могли бы вы помочь, плз
вот jQuery
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js"
type="text/javascript"></script>
<script language="javascript" type="text/javascript">
function findmatch(str){
if (str.length>0){
$('#found').load('SelectQury.php?n=' str);
}
}//fun
</script>
</head>
<body>
<div id="container">
<input type="text" name="text" id="textfield" autocomplete="off"
onkeyup="findmatch(this.value);"/>
<div id="found" >non found</div>
</div>
</body>
</html>
php-код
if(isset($_POST['text'])){
$s=$_POST['text'];
$query="SELECT FROM student WHERE name LIKE '$s%'";
$result=mysql_query($query) or die ('Wrong query : ' . mysql_error() );
$string='';
while($row = mysql_fetch_assoc($result)){
$string.= $row['name'];
}
echo $string;
}else{
echo 'wrong GET keywoord';
}//ifisset
Ответ №1:
Две проблемы:
1. you are sending the value as "GET" method `?n=` and accessing in the PHP code as `$_POST`
2. the passed variable is `n` and not `text`
3. error in mysql query
Используйте следующий PHP-код:
if(isset($_GETT['n'])){
$s=$_GET['n'];
$query="SELECT * FROM student WHERE name LIKE '$s%'";
$result=mysql_query($query) or die ('Wrong query : ' . mysql_error() );
$string='';
while($row = mysql_fetch_assoc($result)){
$string.= $row['name'];
}
echo $string;
}else{
echo 'wrong GET keywoord';
}
Комментарии:
1. спасибо, теперь я получаю сообщение об ошибке: неправильный запрос: у вас ошибка в вашем синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MySQL, на предмет правильного синтаксиса для использования рядом с ‘FROM student WHERE name LIKE a%’ в строке 1
Ответ №2:
Я думаю, вы хотите, чтобы серверная функция возвращала HTML для списка, а не одну строку, представляющую собой объединение всех имен учащихся. Использовали ли вы такой инструмент, как fiddler, для проверки того, что отправляется и возвращается с сервера?
Ответ №3:
Было бы проще, если бы вы могли использовать $.getJSON
для простоты то, что jQuery может быстро анализировать, чем использовать .load
функцию.
Поскольку вы используете post
, это можно сделать таким образом с помощью jQuery:
var inputName = $('input[name=text]').val();
$.post('SelectQury.php', { text: inputName }, function(response)
{
var nameBuild = '';
for(i = 0; i < response.length; i )
{
nameBuild = '<div class="row">' response[i].name '</div>';
}
$(nameBuild).appendTo('#found');
}, 'JSON');
Если вы используете get
, то используйте $.getJSON
, выполнив это:
var inputName = $('input[name=text]').val();
$.getJSON('SelectQury.php', { name: inputName }, function(response)
{
var nameBuild = '';
for(i = 0; i < response.length; i )
{
nameBuild = '<div class="row">' response[i].name '</div>';
}
$(nameBuild).appendTo('#found');
});
PHP:
Замените $ _POST на $_GET, если вы используете get, а не post
if(isset($_POST['text']))
{
$s = mysql_real_escape_string($_POST['text']);
$query = "SELECT FROM student WHERE name LIKE '$s%'";
$result = mysql_query($query) or die ('Wrong query : ' . mysql_error() );
$string = array();
while($row = mysql_fetch_assoc($result))
{
$string[] = array('name' => $row['name']);
}
echo json_encode($string);
}
else
{
echo 'wrong GET keywoord';
}
Ответ №4:
На самом деле это довольно просто. jQuery выполняет большую часть тяжелой работы. Проблема заключается в получении данных из php в javascript. Затем, после этого, вы передаете данные в функцию автозаполнения jquery
пример:
var data = "<?php echo implode(",",$customer_list) ?>".split(",");
$("#CUSTOMER_NAME" ).autocomplete({source: data});
Вот массив customer_list, который помещается в массив данных javascript. Используйте селектор jquery в поле ввода, затем добавьте функцию автозаполнения.
Надеюсь, это поможет