需求:

php从数据库中读取到二维数组。传递到js中

实现步骤:

php:json_encode  →   json  →  js:eval

即在php中使用json_encode()将php的二维数组转化成json格式。传递到js中,使用eval()解析得到js的二维数组。

代码:

php:

<?php
header("Content-Type: text/html; charset=utf8") ;
$con=mysqli_connect("url","name","password","databasename");
// Check connection
if (mysqli_connect_errno($con))
echo "Failed to connect to MySQL: " . mysqli_connect_error(); mysqli_query($con,"set character set 'utf8'");
mysqli_query($con,"set names 'utf8'"); $json_arr = array(array("a","b","c",1,2,3),array("q","w",1,2));
$jsonstr = json_encode($json_arr); ? >
var json=<?=$jsonstr?>;

js:

<script type="text/javascript" src="http://.../test.php"></script>
<script language="javascript" type="text/javascript">
$(document).ready(function(){
var jsonstr =eval(json);
for(var k=0;k<jsonstr.length;k++){
for(var i=0;i<jsonstr[k].length;i++)
alert(jsonstr[k][i]);
}
})
</script>

遇到的问题:

1.php中二维数组使用json_encode()转化成json时。第二维数组能够echo出来,可是转化成json为空。

到网上查资料确定问题是第二维数组中含有非utf8编码。果然,我把二维数组中第二维数组互换位置,变成第一个数组的json为空了。

结论:json_encode()能够转化多维数组。可是基本要求是编码为utf8。遇到多维数组中某一子数组转化json为null,极有可能使这一子数组中含有编码不是utf8的元素。

2.wamp mysql 在phpmyadmin中看到数据表内容是正常汉字。可是用php读取出来打印发现汉字都变成?了。

数据库中各个表的整理方式都是utf8_general_ci。php文件里也声明了

header("Content-Type: text/html; charset=utf-8") ;
...
mysqli_query($con,"set character set 'utf-8'");
mysqli_query($con,"set names 'utf-8'");

这些代码我一直是这么用的(之前用的是wamp低版本号。还是用的mysql_query。如今报错说废弃了,就改成了mysqli)。之前也没出现过中文变成?的情况。网上一查,原来是utf-8与utf8这个地方。。

应该是这样:

header("Content-Type: text/html; charset=utf8") ;
...
mysqli_query($con,"set character set 'utf8'");
mysqli_query($con,"set names 'utf8'");

结论:mysql中还是使用utf8吧。。。

无语。

php 二维数组传递给 js 问题解决记录的更多相关文章

  1. C++中用二维数组传参时形参该怎样写[转]

    二维数组的存储方式是和一维数组没什么区别,但是用二维数组做参数,它的形参该怎样写? 要注意的是:函数中的形参其实就相当于一个声明,并不产生内存分配,形参的目的就是要让编译器知道函数参数的数据类型. 正 ...

  2. phpcms抛出的二维数组转移到js,js中for....in遍历数组,用“.”连接来读出一维数组值

    直切正题: 1.phpcms在模版中读出数组有很多中方法,如,{pc:content action="lists"}或{pc:get sql=""},经过{lo ...

  3. 将 JSP 中数组传递给 js

    <%       String[]  name   =   { "w ", "a ", "n ", "g"}; % ...

  4. C语言学习笔记 (006) - 二维数组传参的三种表现形式

    # include <stdio.h> # include <stdlib.h> # define M # define N int getdate(int (*sp)[M]) ...

  5. c指针与数组,传参问题,指针数组与数组指针的区别,二维数组动态内存分配

    一 数组的结构:顺序存储,看谭浩强中的图,牢记 1.数组名指代一种数据结构:数组 现在可以解释为什么第1个程序第6行的输出为10的问题,根据结论1,数组名str的内涵为一种数据结构,即一个长度为10的 ...

  6. 【C/C++】二维数组的传参的方法/二维字符数组的声明,使用,输入,传参

    [问题] 定义了一个子函数,传参的内容是一个二维数组 编译提示错误 因为多维数组作为形参传入时,必须声明除第一位维外的确定值,否则系统无法编译(算不出偏移地址) [二维数组的传参] 方法一:形参为二维 ...

  7. C语言之二维数组与指针

    二维数组: ][]; 二维数组实质上也就是一维数组,a[2][3]可看做一个2个元素的一维数组,这2个元素又是另一个数组,在内存中,它的排布如下: #include "stdio.h&quo ...

  8. 关于C语言中二维数组传參————————【Badboy】

    直接上代码: #include void Fun(int *a[],int m,int n)// { printf("%d\t",*a);//[0][0] /* int e[2][ ...

  9. jquery解析php通过ajax传过来的json二维数组对象

    ajax获得php传过来的json二维数组对象,jquery解析 php代码: <?php $news = array( '武汉'=>array(1,2,3), '广州'=>arra ...

随机推荐

  1. Java调用cmd压缩文件

    今天在做一个java调用windows的压缩命令时遇到一奇怪问题代码如下: String cmd ="C:/Program Files (x86)/WinRAR/rar.exe a c:/t ...

  2. 关于AIX VG中 LV 的状态问题,LV STATE

    在数据库管理过程中常常遇见LV状态异常,而造成LV不能再次被使用的情况,那么AIX中LV的两种状态分别代表什么呢 如果是访问fs需要open,即创建文件系统并mount 文件系统LV STATE 才是 ...

  3. SQL SERVER FOR 多列字符串连接 XML PATH 及 STUFF

    原文:SQL SERVER FOR 多列字符串连接 XML PATH 及 STUFF 本来用 Writer 写一篇关于一列多行合并的博客来的,结果快写完了时候,在一个插入代码时候,崩了,重新打开,居然 ...

  4. SO_REUSEADDR 套接字选项应用

    在网络上的SO_REUSEADDR套接字选项是用来解决地址问题重用了大量的信息.但仅仅停留在文字的表达.并没有实例,非常easy误导谁刚开始学习,和不解,此处不再赘述. 的使用该选项,以及须要注意的问 ...

  5. JavaScript采用append添加的元素错误

    1.错误叙述性说明 于IE览器上: Uncaught HierarchyRequestError:Failed to excute 'appendChild' on 'Node':The new ch ...

  6. hdu5115(区间dp)

    n头狼排成一列,每头狼有两个属性,基础攻击力和附加攻击力, 第i只狼的基础攻击力是ai,附加攻击力是b(i-1) + b(i+1) 消灭一只狼,受到的伤害为基础攻击力+附加攻击力. 问消灭所有的狼受到 ...

  7. Windows Phone开发(32):路径之PathGeometry

    原文:Windows Phone开发(32):路径之PathGeometry 说起路径这玩意儿,其实说的就是Path类,它藏在命名空间System.Windows.Shapes下,应该好找,它有一个很 ...

  8. cocos2d-x: 33种切换场景

    [1]:CCTransitionCrossFade::create(时间,目标场景); //慢慢淡化到还有一场景 [2]:CCTransitionFade::create(时间,目标场景); //本场 ...

  9. jsp的原则执行

    什么时候server一对JSP页面运行时,第一个请求,server向上JSP引擎首先JSP页的文件翻译成Java文件.那么这Java文件编译的字节码文件..而当这个JSP页面再次被请求运行时,JSP引 ...

  10. 深入理解计算机系统之旅(四)处理器(CPU)的体系结构

    1.前言 处理器是很复杂的系统,它不是一蹴而就的,它是经过不断的升级.更新.设计之后的产物,而且如今还在保持着不断的更新. 处理器仅仅能运行一系列的指令,每条指令都仅仅是运行某个简单的操作,比方数字相 ...