php json autocomplete freebase

Resultados de Parse JSON Freebase en PHP



autocomplete (1)

Realmente lo siento si esto es demasiado básico, pero realmente no sé cómo hacer esto.

Estoy usando este complemento de Jquery Autocomplete: http://devthought.com/wp-content/projects/jquery/textboxlist/Demo/

EDITAR: Este es el código jquery que uso para la autocompletar:

$(function() { var t = new $.TextboxList(''#form_topick_tags'', {unique: true, plugins: {autocomplete: { minLength: 2, queryRemote: true, remote: {url: ''autocomplete2.php''} }}});

El complemento usa PHP para autocompletar, este es un ejemplo, devuelve este resultado: "id, text, null (html I n need), algún html"

$response = array(); $names = array(''Abraham Lincoln'', ''Adolf Hitler'', ''Agent Smith'', ''Agnus'', ''Etc''); // make sure they''re sorted alphabetically, for binary search tests sort($names); $search = isset($_REQUEST[''search'']) ? $_REQUEST[''search''] : ''''; foreach ($names as $i => $name) { if (!preg_match("/^$search/i", $name)) continue; $filename = str_replace('' '', '''', strtolower($name)); $response[] = array($i, $name, null, ''<img src="images/''. $filename . (file_exists(''images/'' . $filename . ''.jpg'') ? ''.jpg'' : ''.png'') .''" /> '' . $name); } header(''Content-type: application/json''); echo json_encode($response);

Necesito un PHP similar para procesar estos resultados: http://www.freebase.com/private/suggest?prefix=beatles&type_strict=any&category=object&all_types=false&start=0&limit=10&callback=

... siendo "beatles" el valor $ search, y obteniendo esta salida:

guid,"name",null,"name<span>n:type name</span>"

Entonces, el primer resultado sería:

0,"The Beatles",null,"The Beatles<span>Band</span>"

Por supuesto, necesitaría consultar freebase.com desde ese PHP. Quiero decir:

+---------------+ +-----------+ +------------+ | | | | | | | TextboxList +-------->| PHP +------->| Freebase | | | | | | | +---------------+ +-----------+ +------+-----+ | JSON JSON | TextboxList <--------+ freebase <----------+

es posible? ¡Gracias!


Prueba esto:

$response = array(); $search = isset($_REQUEST[''search'']) ? $_REQUEST[''search''] : ''''; $myJSON = file_get_contents(''http://www.freebase.com/private/suggest?prefix='' . urlencode($search)); $musicObj = json_decode($myJSON); // Need to get $myJSON from somewhere like file_get_contents() foreach ($musicObj->result as $item) { $response[] = array($item->guid, $item->name, null, $item->name . ''<span>''.$item->{''n:type''}->name.''</span>''); } header(''Content-type: application/json''); echo json_encode($response);

El primer resultado JSON-escapado le da:

["#9202a8c04000641f800000000003ac10","The Beatles",null,"The Beatles<span>Band<//span>"]

Pero a pesar de todo esto, realmente no necesita usar PHP para nada. Puede hacer esto todo desde JavaScript y evitar un viaje adicional a su servidor. Si proporciona el argumento de callback a freebase, puede crear JSONP (que es JSON envuelto en una llamada a una función, utilizando un nombre de función de su elección) que puede obtener en jQuery y luego manipular más en JavaScript a su gusto. Pero lo anterior es según su enfoque original en el uso de PHP.