zoukankan      html  css  js  c++  java
  • PHP与JavaScript交换数据

    想把PHP的结果集直接传递到JavaScript中。PHP从数据库中取数据,数据库为GBK编码,PHP和JavaScript所在的html都采用utf-8编码。

    下面是html文件:

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>测试PHP和JavaScript交换参数</title>
    </head>

    <body>
    <script type="text/javascript">
    function getProfile(str) 
    {
        
        
    var arr =eval(str);//或eval(str)
        var s="";
        
        
    for(var i=0; i<arr.length; i++)
        {
           s
    +="name:"+arr[i].name+",nick:"+arr[i].nick+":";
          }
        document.getElementById(
    'TestName').innerHTML =s;
    }
    </script>
    <body><div id="TestName"></div></body>
    <script type="text/javascript" src="../TestJS.php"></script>
    </body>
    </html>

    下面是PHP文件:

    <?php
        include_once("./class.config.php");
        include_once("include/DB.class.php");


        //PHP数组传递给JavaScript以及json_encode的gbk中文乱码的解决
        /**************************************************************
         *
        *    使用特定function对数组中所有元素做处理
        *    @param    string    &$array        要处理的字符串
        *    @param    string    $function    要执行的函数
        *    @return boolean    $apply_to_keys_also        是否也应用到key上
        *    @access public
        *
        ************************************************************
    */
        function arrayRecursive(&$array$function$apply_to_keys_also = false)
        {
            foreach ($array as $key => $value) {
                if (is_array($value)) {
                    arrayRecursive($array[$key], $function$apply_to_keys_also);
                } else {
                    $array[$key] = $function($value);
                }
        
                if ($apply_to_keys_also && is_string($key)) {
                    $new_key = $function($key);
                    if ($new_key != $key) {
                        $array[$new_key] = $array[$key];
                        unset($array[$key]);
                    }
                }
            }
        }
        
        /**************************************************************
         *
        *    将数组转换为JSON字符串(兼容中文)
        *    @param    array    $array        要转换的数组
        *    @return string        转换得到的json字符串
        *    @access public
        *
        ************************************************************
    */
        function JSON($array) {
            arrayRecursive($array, 'urlencode', true);
            $json = json_encode($array);
            return urldecode($json);
        }

        $test = $db->Select("test");
        //构建JSON串
        $jstr='[';
        while($rs = $test->Fetch())
        {
            $nick = iconv("GBK",'utf-8',$rs['nick']);/*转换为utf-8编码*/
            $jstr=$jstr.'{"name":"'.$rs['name'].'","nick":"'.$nick.'"},';
        }
        $jstr=substr($jstr,0,strlen($jstr)-1);
        $jstr=$jstr.']';
        echo "getProfile('$jstr')";
    ?>
  • 相关阅读:
    典型漏洞归纳之上传漏洞
    典型漏洞归纳之解析漏洞
    Python学习目录
    MySQL数据库优化的八种方式
    深度剖析Flask上下文管理机制
    算法十大排序(含动图)
    设计模式代码实例
    设计模式
    数据结构
    算法基础
  • 原文地址:https://www.cnblogs.com/GarfieldTom/p/2751105.html
Copyright © 2011-2022 走看看