Javascript Facebook画布:未捕获类型错误:无法调用方法';排序';未定义的

Javascript Facebook画布:未捕获类型错误:无法调用方法';排序';未定义的,javascript,iframe,facebook-javascript-sdk,facebook-iframe,Javascript,Iframe,Facebook Javascript Sdk,Facebook Iframe,我有一个奇怪的问题。我的multi-friend selector的javascript代码在本地主机上运行良好,但当我将其加载到facebook应用程序的画布中时,它会抛出一个错误 Uncaught TypeError: Cannot call method 'sort' of undefined 当我在localhost上使用chrome开发者工具进行调试时,在all.js的第81行,我可以看到响应对象调用排序方法,但在facebook应用程序中,响应对象是错误对象。我的javascrip

我有一个奇怪的问题。我的multi-friend selector的javascript代码在本地主机上运行良好,但当我将其加载到facebook应用程序的画布中时,它会抛出一个错误

Uncaught TypeError: Cannot call method 'sort' of undefined
当我在localhost上使用chrome开发者工具进行调试时,在all.js的第81行,我可以看到响应对象调用排序方法,但在facebook应用程序中,响应对象是错误对象。我的javascript有什么问题吗?或者在facebook?上加载iframe时要执行的任何特定任务

我已按以下顺序加载库:

    <script src="/static/interface/js/jquery.min.js"></script> 
  <script src="http://connect.facebook.net/en_US/all.js"></script>
        <script src="/static/interface/js/bootstrap.min.js"></script>
        <script src="/static/interface/js/jquery.facebook.multifriend.select.js"></script> 
        <link rel="stylesheet" href="/static/interface/css/jquery.facebook.multifriend.select.css"/> 

下面是javascript代码

<script> 


    FB.init({appId: '460948667348013', cookie: true});

    FB.getLoginStatus(function(response) {
        if (response.session) {
          init();
        } else {
          // no user session available, someone you dont know
        }
    });

    function init() {
      FB.api('/me', function(response) {
          $("#username").html("<img src='https://graph.facebook.com/" + response.id + "/picture'/><div>" + response.name + "</div>");



          $("#jfmfs-container").jfmfs({ 
              max_selected: 15, 
              max_selected_message: "{0} of {1} selected",
              friend_fields: "id,name,last_name",
              pre_selected_friends: [1014025367],
              exclude_friends: [1211122344, 610526078],
              sorter: function(a, b) {
                var x = a.last_name.toLowerCase();
                var y = b.last_name.toLowerCase();
                return ((x < y) ? -1 : ((x > y) ? 1 : 0));
              }
          });
          $("#jfmfs-container").bind("jfmfs.friendload.finished", function() { 
              window.console && console.log("finished loading!"); 
          });
          $("#jfmfs-container").bind("jfmfs.selection.changed", function(e, data) { 
              window.console && console.log("changed", data);
          });                     

          $("#logged-out-status").hide();
          $("#show-friends").show();

      });
    }              



    $("#show-friends").live("click", function() {
        var friendSelector = $("#jfmfs-container").data('jfmfs');             
        $("#selected-friends").html(friendSelector.getSelectedIds().join(', ')); 



    });                  
    function sendRequest() {
       var friendSelector = $("#jfmfs-container").data('jfmfs');
       var sendUIDs = friendSelector.getSelectedIds().join(', '); 
       // Use FB.ui to send the Request(s)
       FB.ui({method: 'apprequests',
         to: sendUIDs,
         title: 'My Great Invite',
         message: 'Check out this Awesome App!',
       }, callback);
     }

     function callback(response) {
        // alert('callback called');
       var friendSelector = $("#jfmfs-container").data('jfmfs');
       var sendUIDs = friendSelector.getSelectedIds().join(','); 
       var uids = sendUIDs.split(',');
       var query = '';
       for(i=0;i<uids.length;i++){
        if(i==0){
            query =  query + 'to[' + i + ']=' + uids[i];
        }
        else{
        query =  query + '&to[' + i + ']=' + uids[i];
        }
       }
       console.log(query);
       if(response){
        // alert('successful');
        window.location.assign("/?"+ query)
       }
       else{
        alert('failure');
       }

     }
window.onload = function() {
      init();
    };

  </script> 

init({appId:'460948667348013',cookie:true});
FB.getLoginStatus(函数(响应){
if(response.session){
init();
}否则{
//没有可用的用户会话,您不认识的人
}
});
函数init(){
FB.api('/me',函数(响应){
$(“#用户名”).html(“+response.name+”);
$(“#jfmfs容器”).jfmfs({
选择的最大值:15,
max_selected_消息:“{1}个已选择中的{0}”,
好友字段:“id、姓名、姓氏”,
预选好友:[1014025367],
排除朋友:[1211122344610526078],
分拣机:功能(a、b){
var x=a.last_name.toLowerCase();
var y=b.last_name.toLowerCase();
回报率((xy)?1:0);
}
});
$(“#jfmfs container”).bind(“jfmfs.friendload.finished”,function(){
window.console&&console.log(“加载完成!”);
});
$(“#jfmfs container”).bind(“jfmfs.selection.changed”,函数(e,数据){
window.console&&console.log(“已更改”,数据);
});                     
$(“#注销状态”).hide();
$(“#显示朋友”).show();
});
}              
$(“#显示朋友”).live(“单击”,函数(){
var-friendSelector=$(“#jfmfs容器”).data('jfmfs');
$(“#选定的朋友”).html(friendSelector.getSelectedDS().join(',');
});                  
函数sendRequest(){
var-friendSelector=$(“#jfmfs容器”).data('jfmfs');
var sendUIDs=friendSelector.getSelectedIds().join(',');
//使用FB.ui发送请求
ui({method:'apprequests',
致:sendUIDs,
标题:“我的伟大邀请”,
消息:“查看这个很棒的应用!”,
},回调);
}
函数回调(响应){
//警报(“调用回调”);
var-friendSelector=$(“#jfmfs容器”).data('jfmfs');
var sendUIDs=friendSelector.getSelectedIds().join(',');
var uids=sendUIDs.split(',');
var查询=“”;
对于(i=0;i而言,如果插入的代码是all.js,那么在我看来,它应该位于标记列表的末尾,因此您已经加载了FBAPI

另外,既然您使用的是jquery,为什么要使用jquery呢

window.onload
当你可以使用

$(document).ready(function() {
    init();
});
?

或者,在导入其他脚本时,是否确定所有脚本都可以访问?(我假设可以,但检查也无妨。)