Javascript 如何从另一个js文件调用函数;如何将会话变量传递到另一个js文件

Javascript 如何从另一个js文件调用函数;如何将会话变量传递到另一个js文件,javascript,google-api,google-plus,Javascript,Google Api,Google Plus,我是Javascript的初学者,正在学习如何创建网站。我正在尝试将google+登录功能添加到我的web应用程序中,但无法通过javascript传递会话信息。我有2个js文件-login.js和profile.js。当用户登录时,login.js将运行,并从profile.js加载一个函数。我在index.html文件中包含了这两个脚本,但仍然出现以下错误:未定义loadProfile。被困了好几天,真的很感谢你的指导 这是我的密码 index.html {head} {scri

我是Javascript的初学者,正在学习如何创建网站。我正在尝试将google+登录功能添加到我的web应用程序中,但无法通过javascript传递会话信息。我有2个js文件-login.js和profile.js。当用户登录时,login.js将运行,并从profile.js加载一个函数。我在index.html文件中包含了这两个脚本,但仍然出现以下错误:未定义loadProfile。被困了好几天,真的很感谢你的指导

这是我的密码

index.html

  {head}
    {script src="https://apis.google.com/js/plusone.js"}{/script}
    {script src="https://apis.google.com/js/client:plusone.js"}{/script}
  {/head}
  {body}
  {script type="text/javascript" src="Scripts/profile.js"}{/script}
  {script type="text/javascript" src="Scripts/login.js"}{/script}
  {input type="button" id="login" value="Login" onclick="login()" /}
  {input type="button" id="logout" class="hide" value="Logout" onclick="logout()" /}
  {script type="text/javascript" src="Scripts/logout.js"}{/script}
  {/body}
login.js

function login() {
   var myParams = {
'clientid' : '699XXXXXXX.apps.googleusercontent.com',
'cookiepolicy' : 'single_host_origin',
'callback' : 'loginCallback', 
'approvalprompt':'force',
'scope' : 'https://www.googleapis.com/auth/plus.login https://www.googleapis.com /auth/plus.profile.emails.read'
 };
gapi.auth.signIn(myParams);
}

function loginCallback(result) {
  if(result['status']['signed_in']) {
  alert("Login Success");
  var obj = gapi.auth.getToken();
  loadProfile();                // Calls loadProfile() from profile.js
  }
 }
profile.js

function loadProfile(){  
var request = gapi.client.plus.people.get( {'userId' : 'me'} );
request.execute(loadProfileCallback());
  }  
function loadProfileCallback(obj) {
profile = obj;
email = obj['emails'].filter(function(v) {
    return v.type === 'account';
})[0].value; 
displayProfile(profile);
  }
>>> subsequently it's just some callback functions

您只需在文件声明之前在HTML中编写一些内联Javascript,如下所示:

<script>
    function loadProfile(){  
        var request = gapi.client.plus.people.get( {'userId' : 'me'} );
        request.execute(loadProfileCallback());
    } 
</script>
<script type="text/javascript" src="Scripts/profile.js"></script>
<script type="text/javascript" src="Scripts/login2.js"></script>

函数loadProfile(){
var request=gapi.client.plus.people.get({'userId':'me'});
execute(loadProfileCallback());
} 

通过这种方式,此函数可供所有后续文件全局使用。请参阅此答案:该问题与您的问题相同,并且对文件的范围及其用法有很好的解释。

我尝试将该函数放入index.html,但它引发了另一个问题:错误:gapi.client.plus未定义。似乎我必须先完成login.js,然后才能调用loadProfile(),所以我不能将其与index.html内联。gapi变量定义在哪里?由于您没有链接它,我看不到变量的声明位置,您是否正确引用了google api脚本?gapi是google+api,我已将其包含在index.html标题中。api.google.com/js/plusone.js“>api.google.com/js/client:plusone.js”>然后我用login.js调用初始化过程,并对google+登录执行授权检查