jQuery: il formato della risposta del widget Autocomplete di jQuery UI

jQuery: il formato della risposta del widget Autocomplete di jQuery UI

Il widget Autocomplete di jQuery UI ha un formato specifico per la risposta JSON.

jQuery UI richiede il seguente formato nella risposta JSON:


[{"value":"A","id":1},{"value":"B","id":2}]

Di seguito due soluzioni in PHP e Node.js.

PHP


header('Content-Type: application/json');

$term = $_GET['term'];
$output = array();

if(!empty($term)) {
    $query = "SELECT name, id FROM data WHERE name LIKE '%" . $db->escape($term) . "%'";
    $results = $db->fetch($query);

    if($db->numRows > 0) {
        foreach($results as $result) {
            $output[] = array(
                'value' => $result->name,
                'id' => $result->id
            );
        }
    }
}

echo json_encode($output);
exit();

Node.js


const express = require('express');
const bodyParser = require('body-parser');
const Data = require('./models/data');
const app = express();

app.use(bodyParser.urlencoded({ extended: true }));

app.get('/api/suggest', function(req, res) {
    var term = req.body.term;
    var output = [];
    if(term && term.length > 0) {
        var reg = new RegExp(term, 'i');
        Data.find({name: reg}, function(err, results) {
            if(!err && results.length > 0) {
                results.forEach(function(result) {
                    var obj = {
                        value: result.name,
                        id: result.id
                    };
                    output.push(obj);
                });
                res.json(output);
            } else {
              res.json(err);
            }
        });
        
    } else {
      res.json(output);
    }
});

Torna su