问题描述
||
如果这太基础了,我真的很抱歉,但是我真的不知道该怎么做。
我正在使用此jquery自动完成插件:http://devthought.com/wp-content/projects/jquery/textboxlist/Demo/
编辑:这是我用于自动完成的jQuery代码:
$(function() {
var t = new $.TextboxList(\'#form_topick_tags\',{unique: true,plugins: {autocomplete: {
minLength: 2,queryRemote: true,remote: {url: \'autocomplete2.php\'}
}}});
该插件使用PHP进行自动填充,这是一个示例,它返回以下输出:\“ id,text,null(我不需要html),一些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);
我需要类似的PHP来处理此结果:http://www.freebase.com/private/suggest?prefix=beatles&type_strict=any&category=object&all_types=false&start=0&limit=10&callback=
...成为$ search值的“ beatles”,并获得以下输出:
guid,\"name\",\"name<span>n:type name</span>\"
因此,第一个结果将是:
0,\"The Beatles\",\"The Beatles<span>Band</span>\"
当然,我需要从该PHP查询freebase.com。我的意思是:
+---------------+ +-----------+ +------------+
| | | | | |
| TextboxList +-------->| PHP +------->| Freebase |
| | | | | |
+---------------+ +-----------+ +------+-----+
|
JSON JSON |
TextboxList <--------+ freebase <----------+
这可能吗?谢谢!
解决方法
尝试这个:
$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);
然后,第一个JSON转义的结果为:
[\"#9202a8c04000641f800000000003ac10\",\"The Beatles\",\"The Beatles<span>Band<\\/span>\"]
但是尽管如此,您确实完全不需要使用PHP来执行此操作。您可以使用JavaScript来完成所有操作,并避免额外的服务器访问。如果向freebase提供callback
参数,它可以创建JSONP(使用您选择的函数名称,将JSON包装在函数调用中),您可以在jQuery中获得它,然后根据自己的喜好在JavaScript中进行进一步的操作。但是以上是您使用PHP时的原始方法。