我正在使用ajax jquery进行实时搜索,因此根据在文本字段中键入的值,运行另一个php脚本,返回数据库中的行数组,使用echo encode_json使用json进行回显和编码,并且此数组将被迭代回调后的javascript。
为什么我要这样做?
这是我的JavaScript,任何人都可以帮助我吗?
<script type="text/javascript">
function find(value){
$( "#test" ).empty();
var myExp = new RegExp(value , "i");
$.ajax({
url: 'searchDb.php',
type: 'POST',
data: 'args='+value+'&limit=2',
success: function(data){
var output = '<ul class="searchresults">';
var count = 0;
$.each(data, function(key, val) {
if ((val.name.search(myExp) != -1)){
output += '<li>';
output += '<p>'+ val.name +'</p>';
output += '</li>';
count += 1;
if(count == 5){
output += '<li>';
output += '<a href="searchResults.php">More Results</a>';
output += '</li>';
if(value.length == 0){
output = '<ul class="searchresults">';
}
return false;
}
}
if(value.length == 0){
output = '<ul class="searchresults">';
}
});
output += '</ul>';
$('#test').html(output);
}
});
}
目前,当我对此进行测试时,它无效并且Google Chrome控制台显示错误
未捕获的TypeError:无法使用'in'运算符在
中搜索“22”[ “SSS”, “SSS”]
我已将数据返回限制为2仅用于测试。它显然它正在返回它,但我不理解不能使用'in'运算符........任何帮助将不胜感激!感谢
PHP代码:
<?php
$link = mysql_connect('localhost', 'root', '');
if (!$link) {
die('Not connected : ' . mysql_error());
}
$db_selected = mysql_select_db('test', $link);
if (!$db_selected) {
die ('Can\'t use test : ' . mysql_error());
}
?>
<?php
function searchDb($abc, $limit = "all"){
$lists = array();
if (isset($abc)) {
$sql = "SELECT testa FROM test WHERE testa LIKE '%$abc%'";
if($limit !== "all"){
$sql .= "LIMIT ". $limit;
}
$result = mysql_query($sql) or die('Error, insert query failed');
while ( $row = mysql_fetch_assoc($result))
{
$var = $row["testa"];
array_push($lists, $var);
}
}
echo json_encode($lists);
}
$abc = $_POST['args'];
$limit = $_POST['limit'];
$lala = searchDb($abc, $limit);
?>
答案 0 :(得分:0)
以这种方式构建响应数据阵列:
while ( $row = mysql_fetch_assoc($result))
{
$var = $row["testa"];
array_push($lists, $var);
}
尝试这样做:
$RESPONSE = array();
$NAMES = array();
while ( $row = mysql_fetch_assoc($result))
{
$var = $row["testa"];
array_push($NAMES,$var);
}
$RESPONSE["NAMES"] = $NAMES;
print json_encode($RESPONSE);
exit();
JS AJAX中的:
$.each(data.NAMES, function(key, val) {
if ((val.search(myExp) != -1)){
.....
更新:根据评论中的要求发送!
函数find(value)的参数未定义
所以在函数顶部添加以下内容
function find(value){
if (typeof foo == 'undefined')
return;