/**
 * 获取反CSRF的token
 * @author scorpionxu
 * @example QZONE.FrontPage.getACSRFToken();
 * @return {String} 返回token串
 *
 */
data.g_tk = getACSRFToken();function getACSRFToken(){
return arguments.callee._DJB(getACSRFToken._getS("skey"));
};/**
 * 一个简单的摘要签名算法
 * @author scorpionxu
 * @ignore
 */
getACSRFToken._DJB = function(str){
var hash = 5381; for(var i = 0, len = str.length; i < len; ++i){
hash += (hash << 5) + str.charAt(i).charCodeAt();
} return hash & 0x7fffffff;
};getACSRFToken._getS = function(name) {
var r = new RegExp("(?:^|;+|\\s+)" + name + "=([^;]*)"), m = document.cookie.match(r);
return (!m ? "" : m[1]);
};
对JS不懂,谁能帮我写个HTML调用下,我想看下返回的token字符串,非常感谢

解决方案 »

  1.   

    调试不出来,没有document.cookie的值。
      

  2.   


    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
    <html>
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
            <title>Untitled Document</title>
            <script type="text/javascript">
                /**
                 * 获取反CSRF的token
                 * @author scorpionxu
                 * @example QZONE.FrontPage.getACSRFToken();
                 * @return {String} 返回token串
                 *
                 */
              //  data.g_tk = getACSRFToken();//这行注释掉先
                //可以在各个函数里面加一些alert()来简单看一下运行的过程
                function getACSRFToken(){

    alert(arguments.callee._DJB(getACSRFToken._getS("skey")));

    //说明:arguments.callee:初始值就是正被执行的 Function 对象,用于匿名函数
                    return arguments.callee._DJB(getACSRFToken._getS("skey"));
                };
                
                /**
                 * 一个简单的摘要签名算法
                 * @author scorpionxu
                 * @ignore
                 */
                getACSRFToken._DJB = function(str){
                    var hash = 5381;
                    
                    for (var i = 0, len = str.length; i < len; ++i) {
                        hash += (hash << 5) + str.charAt(i).charCodeAt();
                    }
                    
                    return hash & 0x7fffffff;
                };
                
                getACSRFToken._getS = function(name){
    //document.cookie.match:从cookie中找r这个值
                    var r = new RegExp("(?:^|;+|\\s+)" + name + "=([^;]*)"), m = document.cookie.match(r);
                    return (!m ? "" : m[1]);//返回时判断,!m成立则取"",否则取m[1]
                };
            </script>
        </head>
        <body>
         <input type="button" name="" value="but1" onclick="getACSRFToken();">
        </body>
    </html>
      

  3.   


    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
    <html>
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
            <title>Untitled Document</title>
            <script type="text/javascript">
                /**
                 * 获取反CSRF的token
                 * @author scorpionxu
                 * @example QZONE.FrontPage.getACSRFToken();
                 * @return {String} 返回token串
                 *
                 */
              //  data.g_tk = getACSRFToken();//这行注释掉先
                //可以在各个函数里面加一些alert()来简单看一下运行的过程
                function getACSRFToken(){
                    
                    alert(arguments.callee._DJB(getACSRFToken._getS("skey")));
                    
                    //说明:arguments.callee:初始值就是正被执行的 Function 对象,用于匿名函数
                    return arguments.callee._DJB(getACSRFToken._getS("skey"));
                };
                
                /**
                 * 一个简单的摘要签名算法
                 * @author scorpionxu
                 * @ignore
                 */
                getACSRFToken._DJB = function(str){
                    var hash = 5381;
                    
                    for (var i = 0, len = str.length; i < len; ++i) {
                        hash += (hash << 5) + str.charAt(i).charCodeAt();
                    }
                    
                    return hash & 0x7fffffff;
                };
                
                getACSRFToken._getS = function(name){
                    //document.cookie.match:从cookie中找r这个值
                    var r = new RegExp("(?:^|;+|\\s+)" + name + "=([^;]*)"), m = document.cookie.match(r);
                    return (!m ? "" : m[1]);//返回时判断,!m成立则取"",否则取m[1]
                };
            </script>
        </head>
        <body>
            <input type="button" name="" value="but1" onclick="getACSRFToken();">
        </body>
    </html>