2011-06-15 75 views
1

这来自Parse JSON Freebase results in PHP 但是,因为它有可能在Javascript中使用JSONP,我会想知道如何。JSONP Freebase的自动完成jquery插件

所以,我用这个jQuery自动完成插件:http://devthought.com/wp-content/projects/jquery/textboxlist/Demo/

这是使用的输入插件代码:

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

我想解析来自游离碱,如结果http://www.freebase.com/private/suggest?prefix=beatles&type_strict=any&category=object&all_types=false&start=0&limit=10&callback=

,并把它传递给插件顺序:

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

所以,第一个结果将是:

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

这是一个很好的计划!所以..你在问什么? – Arend 2011-06-15 08:38:04

回答

2
<input id="form_topick_tags" /> 

<!-- Adjust the script tag locations per your set-up --> 
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script> 
<script src="GrowingInput.js" type="text/javascript" charset="utf-8"></script>   
<script src="../Source/TextboxList.js" type="text/javascript" charset="utf-8"></script>  
<script src="../Source/TextboxList.Autocomplete.js" type="text/javascript" charset="utf-8"></script> 
<!-- required for TextboxList.Autocomplete if method set to 'binary' --> 
<script src="../Source/TextboxList.Autocomplete.Binary.js" type="text/javascript" charset="utf-8"></script>  


<script type="text/javascript"> 
var search = 'beatles', 
    myJSONArray = []; 

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

    $.ajax({ 
     dataType:'JSONP', 
     success: function (obj) { 
      for (var i=0, orl=obj.result.length; i < orl; i++) { 
       var o = obj.result[i]; 
       myJSONArray.push([o.guid, o.name, o.name+'<span>'+o['n:type'].name+'</span>']); 
      } 

      // For testing: 

      // alert(myJSONArray); 
      // You can just use myJSONArray, but if you need JSON, see http://json.org for a JSON converter; in modern browsers, JSON is supported by default 
      //alert(JSON.stringify(myJSONArray)); 

      t.plugins['autocomplete'].setValues(myJSONArray); 
     }, 
     url: 
     'http://www.freebase.com/private/suggest?type_strict=any&category=object&all_types=false&start=0&limit=10&prefix='+encodeURIComponent(search) 
    }); 
}); 
</script> 
+0

我是否必须将'搜索'var声明为'beatles'?因为“搜索”必须是输入字段上的文本... – Santiago 2011-06-15 17:30:27

+0

不,你不知道。只需替换要搜索的输入字段的值,例如'var search = document.getElementById('mysearchElement')value,'并根据按钮单击事件运行整个代码,而不是在页面上运行。 – 2011-06-15 18:36:42