2016-01-18 90 views
0

我有一个搜索表单,我想通过jQuery自动完成显示建议,当输入3个字符时。这些建议来自mySQL DB。 发生了什么:jQuery确实将类型化的字符成功传输到PHP文件,并成功嵌入到mySQL查询中。 当我用假定的搜索词分开打开PHP文件时,f.e.像这样:/soplogsearch.php?term=xyz它完美的作品,我看到的目标是echo json_encode($return_arr); 的结果,但回到HTML搜索表单文件自动完成不提示的东西。我在控制台中没有错误。我试图在HTML文件的其他地方回显json_encode,它的输出是NullPHP数组作为JSON响应jQuery自动完成

我已经做了小提琴的(很简单)的Javascript/jQuery和HTML设置:https://jsfiddle.net/9bf6s07f/1/

相关的PHP代码如下所示:

if (isset($_GET['term'])) 
    { 
    $term = $_GET['term']; 
    $termwild = "%$term%"; 
    $return_arr = array(); 
    $service = mysql_query("SELECT DISTINCT service FROM master WHERE service LIKE \"" . $termwild . "\""); 
    while ($data = mysql_fetch_array($service)) 
     { 
     $return_arr[] = $data[0]; 
     } 
    json_encode($return_arr); 
    echo json_encode($return_arr); 
    } 

编辑:为了更快地访问我米包括代码的HTML和jQuery零件,而不是在这里的链接到你的小提琴https://jsfiddle.net/9bf6s07f

<body> 
    <label>Service:</label> 
    <input type='text' name='' value='' class='auto'> 
</body> 

和jQuery:

$(document).ready(function() { 
    $(function() { 
    $(".auto").autocomplete({ 
     source: "soplogsave.php", 
     minLength: 3 
    }); 
    }); 
}); 

有人知道我在做什么错吗?我用一组javascript变量测试了自动完成,并且它工作正常。

编辑2:因为所有的评论似乎意味着我的PHP是错误的,我有一个错误在控制台中,我从控制台的网络选项卡截图:http://i.imgur.com/i6nAQ98.png

+0

我不认为你的查询是正确的。试试这个: '$ service = mysql_query(“SELECT DISTINCT服务FROM主WHERE服务LIKE'%{$ term}%'”);' 我正在做一个类似的事情,在我的应用程序中,就像你试图做的一样。 – ArtleMaks

+0

你的PHP文件是否返回结果? – HJerem

+0

但这个查询确实有效! mysql_fetch_array – sardine

回答

0

这是怎么了我在我的代码来实现它:

PHP

$param = $_GET["term"]; 

$stk_adddep = " 
SELECT * FROM stocktake_products WHERE stocktake_id = '{$stocktake_id}' AND is_deli = 0 AND (product_code LIKE '%{$param}%' OR product_name LIKE '%{$param}%'); "; 

//FB::info($stk_adddep); 
//echo $stk_adddep; 
//die(); 
$result = db::c()->query($stk_adddep); 
while ($row = $result->fetch(PDO::FETCH_ASSOC)) { 

    $row_array['itemCode'] = $row['product_code']; 
    $row_array['itemDesc'] = $row['product_name']; 
    //$row_array['itemPrice'] = $row['unit_cost_price']; 

    array_push($return_arr, $row_array); 
} 

/* Free connection resources. */ 
//mysql_close($conn); 

/* Toss back results as json encoded array. */ 
echo json_encode($return_arr); 

然后JavaScript的

$(document).ready(function(){ 
// Use the .autocomplete() method to compile the list based on input from user 
var url10 = '<?php echo Navigation::gUrl('/users/admin/stocktake_details_cocktails.php', array('stocktake_id' => $stocktake_id, 'action' => 'find_products'));?>'; 

$('#itemCode').autocomplete({ 
    source: url10, 
    minLength: 1, 
    select: function(event, ui) { 
     var $itemrow = $(this).closest('tr'); 
       // Populate the input fields from the returned values 
       $itemrow.find('#itemCode').val(ui.item.itemCode); 
       $itemrow.find('#itemDesc').val(ui.item.itemDesc); 
       //$itemrow.find('#itemPrice').val(ui.item.itemPrice); 

       // Give focus to the next input field to recieve input from user 
       $('#itemQty').focus(); 

     return false; 
    } 
// Format the list menu output of the autocomplete 
}).data("autocomplete")._renderItem = function(ul, item) { 
    return $("<li></li>") 
     .data("item.autocomplete", item) 
     .append("<a>" + item.itemCode + " - " + item.itemDesc + "</a>") 
     .appendTo(ul); 
}; 

看看你是否可以将它应用到你的代码?

+0

谢谢,但这是太广泛,我的简单代码:(我不是在JavaScript中识字 – sardine

0

答案发布在用户@ n00dl3的评论中。