2011-07-06 50 views
2

我正在尝试使用gigya身份验证属性在我的网站上登录用户。他们有需要调用后,我验证凭据在这种illustrationphp,如何调用一个javascript函数?

看到我有一个表格,当我提交表单我送它到哪里的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> 

更清楚,我设置$talentnum;我的login.php里面。所以我有the form我发送它ti the login.phpredirect page ...哪里拨打socialize.notifyLogin将是?

感谢, 任何想法有助于

回答

2

你有两个选择:

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

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

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

+0

第一个选项..你把代码放在一个'window.onload = function(){}'或者只是在页面中? – Patrioticcow

+0

@Patrioticcow:这取决于通话返回的内容。 'notifyLogin'调用是否会改变页面上的某些内容,或者只是ping外部服务?在第一种情况下,您会希望在页面加载(onload)时执行它。第二,这并不重要。 –

+0

实际上'gigya.services.socialize.notifyLogin(conf,params);'发送一些值给gigya服务器。我希望看到响应函数会说些什么:'function printResponse(response){if(response.errorCode == 0){alert('notifyLogin'后) } }' – Patrioticcow

0

PHP的页面加载之前执行的,所以你不能从PHP调用JavaScript函数。