2015-10-06 101 views
1

从在线教程学习jQuery,找到许多教程,只是找到一个简单的也许很好的新手。 下面是index.html中的代码:jQuery与PHP和MySQL的自动完成无法工作

<!doctype html> 
<html> 
<head> 
    <meta charset="utf-8"> 
    <title> 
    Autocompletement  
    </title> 
    <link rel="stylesheet" type="text/css" href="style.css"> 
    <script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
    <script src="suggest.js"></script> 
</head> 
<body> 

<input type="text" name="suggest" placeholder="Type a Country Name..." onkeyup="suggestion()"/> 
<div id="autosuggest"></div> 
</body> 
</html> 

这里是suggest.php的代码:

<?php 
include "connect.php"; 

function auto($data){ 
    global $mysqli; 
    $data = $_GET['data']; 
    $query = "SELECT code, name_en 
       FROM countries 
       WHERE name_en LIKE '%$data%' 
       OR code LIKE '%$data%'"; 

    $items = '<ul class="suggestion">'; 

    if($result = $mysqli->query($query)){ 
     /* fetch associative array */ 
     while($row = $result->fetch_assoc()){ 
      $items .= '<li>'.$row['name_en'] . ' ' . $row['code'].'</li>'; 
     } 
     $items .= '</ul>'; 
    }else{ 
     $items = "No results Found..."; 
    } 

    echo $items; 
} 

auto(); 

?> 

这里是suggest.js

function suggestion(){ 
    var suggestVal = $('#suggest').val(); 

    if(suggestVal != ''){ 
     $.ajax({ 
      url: 'suggest.php?data='+suggestVal, 
      success: function(data){ 
       $('#autosuggest').html(data); 
      } 
     }) 
    } 
} 

结果的代码上面只会显示“找不到结果...”,看起来处理文件中的suggest.php不起作用,于是我用测试文件test.php测试它:

$mysqli = new mysqli("host","user","pass","database"); 
//auto(); 

$data = $_GET['input']; 
//$data = "ca"; 
$query2 = "SELECT code, name_en FROM countries WHERE name_en LIKE '%$data%' OR code LIKE '%$data%'"; 

echo "<br>" .$query2; 
echo "<br>"; 
if($mysqli){ 
    echo "Yes SQL";echo "<br>"; 
}else{ 
    echo "No SQL";echo "<br>"; 
} 
$result = $mysqli->query("SELECT code, name_en FROM countries WHERE name_en LIKE '%$data%' OR code LIKE '%$data%'"); 

if($result->num_rows){ 
    echo "Yes Result";echo "<br>"; 
}else{ 
    echo "No Result";echo "<br>"; 
} 

奇怪的是,我找不到任何错误的代码,检查php.net示例,似乎一切都很好?但是,当我检查vam_dump($result)那么它是“null”,任何帮助将不胜感激。 这里是test.php的输出:

SELECT code, name_en FROM countries WHERE name_en LIKE '%ch%' OR code LIKE '%ch%' 
Yes SQL 
No Result 

网址:http://IP/project/jquery/auto_diy/test.php?input=ch

+1

看来你输入的没有'ID = “建议”'。给这个应该工作的漩涡'

+0

@ Fred-ii-感谢提醒,已将id添加到索引中,但仍然没有成功 – newbrant

+0

不客气。在打开PHP标记 (例如'<?php error_reporting(E_ALL);)后立即在文件顶部添加错误报告。 ini_set('display_errors',1);'然后你的代码的其余部分,看看它是否产生任何东西, 以及'或die(mysqli_error($ mysqli))'到'mysqli_query()'。如果有的话,请检查您的控制台和JS控制台错误。 –

回答

0

你定义你的函数为具有$data参数

function auto($data){...} 

,但你在呼唤它没有说法,

auto(); 

此w生病触发通知。

该参数不是必需的,因为您已经在函数中使用了$data=$_GET['data'];

然后在您的通话ajax你应该改变它像这样

$.ajax({ 
    url: 'suggest.php', 
    type: 'get', // this can be omitted because GET is default 
    data: 'data='+suggestVal, // or 
    // data: {data:suggestVal} 
    success: function(data){ 
     $('#autosuggest').html(data); 
    } 
}) 

更新:

test.php输出$ result-> NUM_ROWS直接价值

print "Rows returned: " . $result->num_rows . "<br>"; 

如果您得到零行,请复制查询并在phpmyadmin中运行它或者一个MySQL控制台来验证数据。

suggest.php,更新此:

$result = $mysqli->query($query); 

if (!$result) { 
    print 'Could not execute query'; 
} 
else { 
    while($row = $result->fetch_assoc()){ 
     $items .= '<li>'.$row['name_en'] . ' ' . $row['code'].'</li>'; 
    } 
} 

$items .= '</ul>'; 
+0

谢谢,我的代码已经颠倒了,但它似乎是相同的结果。你能帮我看一下test.php代码,如果test.php可以工作,我想我可以找出哪个部分是错误的。 – newbrant