2017-08-01 73 views
1

我想使用被標記爲工作的代碼,我沒有得到任何結果,它只是空的。注意:如果單獨運行,MySQL會返回結果,所以它不是一個SQL的東西。有什麼建議麼?使用JQuery自動完成與PHP/MySQL不工作

HTML:

<head> 
     <title>TODO supply a title</title> 
     <meta charset="UTF-8"> 
     <meta name="viewport" content="width=device-width, initial-scale=1.0"> 
     <link rel="stylesheet" href="https://code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">  
     <script src="https://code.jquery.com/jquery-1.12.4.js"></script> 
     <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script> 
    </head> 
    <body> 

     Name: <input id="hint" /> 

     <script type="text/javascript"> 

      $("#hint").autocomplete({ 
       source: function (request, response) { 
        $.ajax({ 
         url: "getMedicineNames.php", 
         dataType: "jsonp", 
         data: { 
          name: request 
         }, 
         success: function (data) { 
          response(data); 
         } 
        }); 
       }, 
       minLength: 3 
      }); 

     </script> 
    </body> 

PHP:

require 'connect.inc.php'; 
$mysql = mysqli_connect("$db_host", "$db_username", "$db_pass", "$db_name"); 
$name = $_POST['name']; 
if ($name != "") { 

    $sql = "SELECT MedicineName FROM medicinetypes WHERE MedicineNAme LIKE '%$name%'"; 
    echo json_encode(mysqli_fetch_all(mysqli_query($mysql, $sql), MYSQLI_ASSOC)); 
} 
+3

正確此行'數據類型: 「JSON」,'不是'數據類型: 「JSONP」,' –

+0

還包括'鍵入:「POST」,' –

+0

仍然沒有.. – Constantine

回答

0

好吧,我找到了一個更好的答案,但主要問題是我的PHP代碼,我離開數組作爲一個assoc是錯誤的。

JS:

$(function() { 
    $("#hint").autocomplete({ 
     source: 'getMedicineNames.php' 
    }); 
}); 

PHP:

$mysql = mysqli_connect("$db_host", "$db_username", "$db_pass", "$db_name"); 
$name = $_GET['term']; 

$sql = "SELECT MedicineName FROM medicinetypes WHERE MedicineNAme LIKE '%$name%'"; 
$res = mysqli_query($mysql, $sql); 
$res = mysqli_fetch_all($res, MYSQLI_ASSOC); 

foreach($res as $row){ 
    $data[]=$row['MedicineName']; 

} 
echo json_encode($data); 
0

請添加數據類型: 「JSON」,&類型: 「GET」。

如果不工作,請添加JSON響應的屏幕截圖。

+0

好吧,所以改變了一些東西,首先是request.term然後PHP現在接受get。數據成功返回並顯示在console.log(數據)控制檯上,但它停在那裏,前端沒有任何事情發生 – Constantine

+0

現在我做了一些事情,但出現了一些空的小字段 – Constantine

0

Bilal Ahmed答案是正確的。

Aditinoally這有點不正確:

$name = $_POST['name']; // Maybe cause a PHP Warning 

就可以解決這個創建一個未設置值:

$name = isset($_POST['name']) ? $_POST['name'] : ""; 
/* "" can be NULL, FALSE, 0 or any value */ 

在PHP7可以讓這個:

$name = $_POST['name'] ?? ""; 
/* "" can be NULL, FALSE, 0 or any value */