-->

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

2019-10-19 04:41发布

使用jQueryUI的自动完成搜索MySQL数据库。 当用户按下搜索字段中输入,我想填充的结果(S)一个div来自DB返回。

代码工作,并不会返回的建议自动完成列表。

然而,JSON数据在选择返回:功能是不是我的预期。

在下面的PHP代码示例,该查询请求与由查询匹配的每个标题数据库中的所有领域。 应该有其他领域,如作者,投标,ISBN,流派等-但是,只有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"}

哪里是其他领域?

我的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);
    }
});

我的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);

Answer 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);


文章来源: jQueryUI autocomplete JSON not returning expected data