2011-06-09 86 views
0

我试图摆脱MySQL表期运用PHP和jQuery的自动完成功能的名单,但我没有得到任何result.could你帮PLZ自动完成jQuery和PHP的问题

这里是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 

回答

0

两个问题:

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'; 

} 
+0

现在感谢我收到此错误消息:错误的查询:您的SQL语法错误;检查与您的MySQL服务器版本相对应的手册,以找到在第1行'FROM学生WHERE名称LIKE a%'附近使用的正确语法 – Mary 2011-06-09 11:51:33

0

我想你想的服务器函数返回HTML的列表,而不是一个单一的字符串,它是所有的学生姓名的串联。您是否使用过像fiddler这样的工具来检查从服务器发送和返回的内容?

0

为简单起见,如果您可以使用$.getJSON会比使用.load函数更容易解析jQuery。

由于您使用post这是可以做到这样使用jQuery:

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:

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

将$ _POST替换为$ _GET,如果您使用的是比使用后

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'; 
} 
0

真的很简单。 JQuery做了大部分的努力工作。问题是从PHP到JavaScript的数据。然后在这之后,你将数据传递到jQuery的自动完成功能

例如:

var data = "<?php echo implode(",",$customer_list) ?>".split(","); 
    $("#CUSTOMER_NAME").autocomplete({source: data}); 

下面是一个CUSTOMER_LIST阵列放入JavaScript的数据阵列。在输入字段上使用jquery选择器,然后添加自动完成功能。

希望有帮助