2015-10-06 30 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

相關問題