2011-07-06 58 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函數。