Javascript 在autocomplete中包含json

Javascript 在autocomplete中包含json,javascript,php,jquery,json,autocomplete,Javascript,Php,Jquery,Json,Autocomplete,当我得到包含项目的json数据时,为什么自动完成不起作用?我可以感觉到它正在成为一个列表,但它没有填入名字 我的json数据示例: $(函数(){ $(“#inp#U MEIN_a_0”)。自动完成({ 来源:“search.php” }); $('inp#u fine_a_0')。on('autocompleteselect',函数(e,ui){ var val=$('inp#u size_a_0').val(); var能量=ui.item.energy; var蛋白质=ui.item.

当我得到包含项目的json数据时,为什么自动完成不起作用?我可以感觉到它正在成为一个列表,但它没有填入名字

我的json数据示例:


$(函数(){
$(“#inp#U MEIN_a_0”)。自动完成({
来源:“search.php”
});
$('inp#u fine_a_0')。on('autocompleteselect',函数(e,ui){
var val=$('inp#u size_a_0').val();
var能量=ui.item.energy;
var蛋白质=ui.item.proteins;
var碳水化合物=ui.item.carboxes;
var fat=ui.item.fat;
美元(“#inp#u energy_a_0”).val((energy*val)/100);
$(“#inp_蛋白质_a_0”).val((蛋白质*val)/100);
$(“inp#u carbs_a_0”).val((碳水化合物*val)/100);
美元(“#inp#u fat_a_0”).val((fat*val)/100);
});
});
Search.php

<?php
header('Content-type: text/html; charset=windows-1252;');

// Make a MySQL Connection
$host = $_SERVER['HTTP_HOST'];
if($host == "127.1.1.0"){
    mysql_connect("localhost", "root", "") or die(mysql_error());
    mysql_select_db("n") or die(mysql_error());
}



// Quote smart
function quote_smart($value){
    // Stripslashes
    if (get_magic_quotes_gpc() && !is_null($value) ) {
               $value = stripslashes($value);
        }

        //Change decimal values from , to . if applicable
        if( is_numeric($value) && strpos($value,',') !== false ){
                $value = str_replace(',','.',$value);
        }
        if( is_null($value) ){
                $value = 'NULL';
        }
        // Quote if not integer or null
        elseif (!is_numeric($value)) {
                $value = "'" . mysql_real_escape_string($value) . "'";
        }

        return $value;
}




if(isset($_GET['term']) && $_GET['term'] != ''){
    $term = $_GET['term'];
    $term = strip_tags(stripslashes($term));
    $term = trim($term);
    $term = strtolower($term);
    $term = $term . "%";
    $part_mysql = quote_smart($term);


    //get matched data from skills table
    $x = 0;
    $query = "SELECT cc_id, cc_food_name, cc_manufactor_name, cc_serving_size, cc_serving_mesurment, cc_energy, cc_proteins, cc_carbohydrates, cc_fat FROM stram_calorie_calculation WHERE cc_food_name LIKE $part_mysql";
    $r = mysql_query($query);
    while ($row = mysql_fetch_array($r, MYSQL_NUM)) {
        $get_cc_id          = $row[0];
        $get_cc_food_name       = $row[1];
        $get_cc_manufactor_name     = $row[2];
        $get_cc_serving_size        = $row[3];
        $get_cc_serving_mesurment   = $row[4];
        $get_cc_energy          = $row[5];
        $get_cc_proteins        = $row[6];
        $get_cc_carbohydrates       = $row[7];
        $get_cc_fat             = $row[8];

        if($get_cc_food_name == ""){
            $result = mysql_query("DELETE FROM stram_calorie_calculation WHERE cc_id='$get_cc_id'") or die(mysql_error()); 
        }

            $data[$x] = array('food_name' => $get_cc_food_name, 'energy' => $get_cc_energy, 'proteins' => $get_cc_proteins, 'carbohydrates' => $get_cc_carbohydrates, 'fat' => $get_cc_fat);

        //$data[$x] = $get_cc_food_name;
        $x++;
    }
    //return json data
    echo json_encode($data);
}
?>

问题是因为
search.php
返回的JSON格式不正确;它应该是
[{“label”:“label”,“value”:“value”},…]
。如果看不到该页面的代码,我们无法真正帮助您更改它。我想您可以在其中添加额外的字段,但您需要
label
value
。因此,我使用“label”?而不是“food\u name”。为了简化,您只需执行$data[$x]=$row;它在工作:)我用“值”代替“食物名”。
<?php
header('Content-type: text/html; charset=windows-1252;');

// Make a MySQL Connection
$host = $_SERVER['HTTP_HOST'];
if($host == "127.1.1.0"){
    mysql_connect("localhost", "root", "") or die(mysql_error());
    mysql_select_db("n") or die(mysql_error());
}



// Quote smart
function quote_smart($value){
    // Stripslashes
    if (get_magic_quotes_gpc() && !is_null($value) ) {
               $value = stripslashes($value);
        }

        //Change decimal values from , to . if applicable
        if( is_numeric($value) && strpos($value,',') !== false ){
                $value = str_replace(',','.',$value);
        }
        if( is_null($value) ){
                $value = 'NULL';
        }
        // Quote if not integer or null
        elseif (!is_numeric($value)) {
                $value = "'" . mysql_real_escape_string($value) . "'";
        }

        return $value;
}




if(isset($_GET['term']) && $_GET['term'] != ''){
    $term = $_GET['term'];
    $term = strip_tags(stripslashes($term));
    $term = trim($term);
    $term = strtolower($term);
    $term = $term . "%";
    $part_mysql = quote_smart($term);


    //get matched data from skills table
    $x = 0;
    $query = "SELECT cc_id, cc_food_name, cc_manufactor_name, cc_serving_size, cc_serving_mesurment, cc_energy, cc_proteins, cc_carbohydrates, cc_fat FROM stram_calorie_calculation WHERE cc_food_name LIKE $part_mysql";
    $r = mysql_query($query);
    while ($row = mysql_fetch_array($r, MYSQL_NUM)) {
        $get_cc_id          = $row[0];
        $get_cc_food_name       = $row[1];
        $get_cc_manufactor_name     = $row[2];
        $get_cc_serving_size        = $row[3];
        $get_cc_serving_mesurment   = $row[4];
        $get_cc_energy          = $row[5];
        $get_cc_proteins        = $row[6];
        $get_cc_carbohydrates       = $row[7];
        $get_cc_fat             = $row[8];

        if($get_cc_food_name == ""){
            $result = mysql_query("DELETE FROM stram_calorie_calculation WHERE cc_id='$get_cc_id'") or die(mysql_error()); 
        }

            $data[$x] = array('food_name' => $get_cc_food_name, 'energy' => $get_cc_energy, 'proteins' => $get_cc_proteins, 'carbohydrates' => $get_cc_carbohydrates, 'fat' => $get_cc_fat);

        //$data[$x] = $get_cc_food_name;
        $x++;
    }
    //return json data
    echo json_encode($data);
}
?>