如果这太基本了,我真的很抱歉,但我真的不知道该怎么做。
我正在使用此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=
... “beatles” $ search值,并获得此输出:
guid,"name",null,"name<span>n:type name</span>"
所以,第一个结果是:
0,"The Beatles",null,"The Beatles<span>Band</span>"
当然我需要从那个PHP查询freebase.com。我的意思是:
+---------------+ +-----------+ +------------+
| | | | | |
| TextboxList +-------->| PHP +------->| Freebase |
| | | | | |
+---------------+ +-----------+ +------+-----+
|
JSON JSON |
TextboxList <--------+ freebase <----------+
这可能吗?谢谢!
答案 0 :(得分:2)
试试这个:
$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",null,"The Beatles<span>Band<\/span>"]
但是尽管如此,你根本不需要使用PHP来做到这一点。您可以通过JavaScript完成所有操作,避免额外的服务器访问。如果你向freebase提供callback
参数,它可以创建JSONP(使用你选择的函数名调用函数调用JSON包装),你可以在jQuery中获取它,然后在JavaScript中进一步操作你的喜好但以上是按照您使用PHP的原始方法。