首页 文章

jQueryUI自动完成JSON不返回预期的数据

提问于
浏览
1

使用jQueryUI自动完成来搜索MySQL数据库 . 当用户在搜索字段中按Enter键时,我想填充一个div,其中包含从DB返回的结果 .

该代码有效,并返回自动完成的建议列表 .

However, the JSON data returned in the select: function is not what I expected.

在下面的PHP代码示例中,查询请求数据库中与查询匹配的每个 Headers 相关的所有字段 . 应该有其他字段,例如author,bid,isbn,genre等 - 但是,只返回了 title 字段 .

谷歌Chrome的控制台如下所示:

Object {item: Object}
  item: Object
    label: "Much Obliged Jeeves"
    value: "Much Obliged Jeeves"
    __proto__: Object
  Object {label: "Much Obliged Jeeves", value: "Much Obliged Jeeves"}

其他领域在哪里?

My jQuery:

$('#srxbks').autocomplete({
    source: "autocomplete_test.php",
    minLength: 1,
    select: function( event, ui ) {
        console.log(ui);
        console.log(ui.item);
        console.log(ui.item.label);

        //Not working:
        var out = 'Title: ' + ui.item.title + '<br>';
        out += 'Author: ' + ui.item.author + '<br>';
        $('.booksTableDIV').val(out);
    }
});

My PHP:

<?php
include 'connect.php';

$term = strip_tags($_GET['term']);//retrieve search term sent by autocomplete

$qstring = "SELECT * FROM `books` WHERE `title` LIKE '%" .$term. "%'";
$query = mysql_query($qstring) or die(mysql_error());

while ($row = mysql_fetch_array($query)) {
    $row['title']=htmlentities(stripslashes($row['title']));
    $row['bid']=(int)$row['bid'];
    $row_set[] = $row['title'];
}
echo json_encode($row_set);

1 回答

  • 1

    您只需要确保所有变量都包含在返回的数组中 . 您的PHP是有问题的部分,您没有正确地将变量传输到JSON . 你的jQuery很好 . 以下是您希望发送回jQuery的每个额外变量需要执行的操作 .

    // Initialize your variables here
    $returns = array();
    $i = 0;
    
    while ($row = mysql_fetch_array($query)) {
        // Format your variables here
        $row['title']=htmlentities(stripslashes($row['title']));
        $row['bid']=(int)$row['bid'];
    
        // Enter results into JSON array here
        $returns[$i]['title'] = $row['title'];
        $returns[$i]['bid'] = $row['bid'];
        $i++;
    }
    
    echo json_encode($returns);
    

相关问题