【问题标题】:php, how to call a javascript function?php,如何调用一个javascript函数?
【发布时间】:2011-07-07 07:38:10
【问题描述】:

我正在尝试使用 gigya auth 属性在我的网站上登录用户。他们有一个函数需要在我验证凭据后调用,如illustration 中所示。

我有一个表单,当我提交表单时,我将它发送到 login.php,在那里我对我的用户进行身份验证。我的问题是我如何call socialize.notifyLogin?。

这是javascript:

<script type="text/javascript"> var conf = { APIKey:'2_9E9r_ojXEqzZJqKk7mRqvs81LtiSvUmBcm' }; </script>
<script type="text/javascript">
var secret = 'eIqtclW2CxC6qvmT55MvOxZ5Rm7V5JhBV/gioJLKIxM=';
var yourSiteUid= '<?php echo $talentnum;?>'; // siteUID should be retrieved from your user management system

function your_b64_hmac_sha1(secret, datePlusSite) { 
var b64Sig = ''; // Place your implementation here ... 
return b64Sig; 
}

function printResponse(response) {
if ( response.errorCode == 0 ) {
    alert('After notifyLogin');    
}
}

var dateStr = getCurrentTime();  
var datePlusSite = dateStr + "_" + yourSiteUid;
var yourSig = your_b64_hmac_sha1(secret, datePlusSite);

var params={
siteUID:yourSiteUid,
timestamp:dateStr,
signature:yourSig,
callback:printResponse
};

gigya.services.socialize.notifyLogin(conf,params);
</script> 

为了更清楚,我在我的 login.php 中设置了$talentnum;。所以我有the form 我把它发给the login.php 和一个redirect page...socialize.notifyLogin 的电话会在哪里?

谢谢, 任何想法都有帮助

【问题讨论】:

    标签: php javascript gigya


    【解决方案1】:

    你有两个选择:

    如果您调用 login.php 作为 HTML 表单的目标,您应该在成功登录后将用户重定向到新的 HTML 页面。这个新的 HTML 页面应该包含 socialize.notifyLogin 调用。

    如果你通过AJAX请求调用login.php,你应该在AJAX请求的“成功”回调中调用socialize.notifyLogin

    但是,在任何情况下,您都不能直接从您的 PHP 脚本执行 Javascript 函数。 PHP 在将 Javascript 作为 HTML 文档的输出发送给用户之前在服务器上执行,因此无法直接执行 Javascript 函数。

    【讨论】:

    • 对于第一个选项..您将代码放在window.onload = function(){} 中还是仅在页面中??
    • @Patrioticcow:这取决于调用返回的内容。 notifyLogin 调用是否会更改您页面上的某些内容,还是只是 ping 外部服务?在第一种情况下,您需要在页面加载(onload)时执行它。第二种,没关系。
    • 实际上gigya.services.socialize.notifyLogin(conf,params); 将一些值发送到 gigya 服务器。我想看看响应函数说些什么:function printResponse(response) { if ( response.errorCode == 0 ) { alert('After notifyLogin'); } }
    • 由于您需要输出,因此您需要在页面完全加载后使用onload 事件执行调用。
    【解决方案2】:

    PHP 在页面加载之前执行,因此您不能从 PHP 调用 JavaScript 函数。

    【讨论】:

      猜你喜欢
      • 2010-11-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多