2011-12-16 60 views
0
$(document).ready(function() { 
      $("#example").autocomplete("https://graph.facebook.com/me/friends?access_token=" + accessToken + "&callback=?", { 

       width: 250, 
       height: 400, 
       max: 8, 
       dataType: 'jsonp', 
       cacheLength: 10, 
       minChars: 1, 
       parse: function (data) { 
        var rows = new Array(); 
        data = data.data; 
        for (var i = 0; i < data.length; i++) { 
         rows[i] = { data: data[i], value: data[i].name, result: data[i].name }; 
        } 
        return rows; 
       }, 
       formatItem: function (data, i, n, value, text, a, b, c, d) { 
        var x = getImage(data.id); 
        return "<div class='test2'><img class='test' width='32px' height='32px' src='" + x + "'></img><span>" + data.name + "</span></div>"; 
       }, 

      } 
      ).result(function (evnet, item) { 
       alert(item.id);  
      }); 
    }); 

    <input type="text" id="example"/> 

我使用此代碼的Facebook好友autosuggestion.It工作,但它太慢,因爲每次自動完成功能從遠程位置搜索數據。將遠程數據傳遞到自動完成

是否有任何其他方式通過保存變量並將其傳遞給.autocomplete()函數來傳遞遠程數據。

後來我試着將遠程數據保存到一個變量,但我無法將該變量傳遞給自動完成。

jQuery的(文件)。就緒(函數(){

var aToken = document.getElementById('aToken').value; 
jQuery.getJSON("https://graph.facebook.com/me/friends?access_token="+aToken, function(data) { 
    var data = data; 
}); 
    jQuery("#name_inp").autocomplete({ 
     width: 500, 
     height: 200, 
    max: 5000, 
    source: data, 
     dataType: 'jsonp', 
     cacheLength: 10, 
     minChars: 1, 
     parse: function (data) { 
      var rows = new Array(); 
      data = data.data; 
      for (var i = 0; i < data.length; i++) { 
       rows[i] = { data: data[i], value: data[i].name, result: data[i].name }; 
      } 
      return rows; 
     }, 
     formatItem: function (data, i, n, value, text, a, b, c, d) { 
      var x = getImage(data.id); 
      return "<div class='test2' onclick='return getId("+data.id+");'><span>" + data.name + "</span></div>"; 
     }, 

    } 
    ) 
}); 

回答

0
  1. 您可以檢索完整的好友列表,並存儲在本地。然後,而不是進行遠程調用做本地數據搜索。
  2. 同時設定noCache: false將緩存請求,並會在緩存第一
  3. 具有良好的網絡連接嘗試搜索。:)

編輯:
試試這個。在這裏,我將結果存儲在可用作自動完成源的userList變量中。

$(function() { 
     userList = null; 
     $.getJSON("https://graph.facebook.com/me/friends", {access_token:access_token,callback:"?"}, function(users) { 
       userList = users; 
      }); 
    });  

或者你可以試試這個

$(function() { 
     userList = null; 
     $.getJSON("https://graph.facebook.com/me/friends?access_token=" + accessToken + "&callback=?",function(users) { 
       userList = users; 
      }); 
    });  

我從來沒有使用Facebook的API,因此不能確定哪些參數傳遞。

+0

我嘗試使用$ .getJSON(),但我無法將該變量傳遞給autocomplete.can,請您在此分享您的代碼! – 2011-12-16 06:19:37

相關問題