m_Orchestrate learning system---三十五、php数据和js数据的解耦:php数据(php代码)不要放到js代码中
m_Orchestrate learning system---三十五、php数据和js数据的解耦:php数据(php代码)不要放到js代码中
一、总结
一句话总结:也就是以html为中介,用html存储数据,用js取数据
html 存 js 取 html 中介
json JSON.parse() html()
可以放在div标签里面,js中使用的时候直接找到这个div拿就可以了
也就是以html为中介
用html存储数据
<div id="fry_analyze_record_graph_{$vo['ar_id']}_option_data" style="display: none;">
{$vo['option_data_json']}
</div>
用js取数据
$('.fry_analyze_record_graph').change(function () {
var option_data_div_id=$(this).attr('id')+'_option_data';
var option_data=JSON.parse($('#'+option_data_div_id).html());
1、js数组转化为json数据?
JSON.stringify() JSON.parse()

jquery3.0后鼓励我们用元素的js和json间数据转换的方法
1、JS对象转JSON
方式:JSON.stringify(obj)
var json = {"name":"iphone","price":666}; //创建对象;
var jsonStr = JSON.stringify(json); //转为JSON字符串
console.log(jsonStr);

2、JS数组转JSON
//数组转json串
var arr = [1,2,3, { a : 1 } ];
JSON.stringify( arr );
3、JS对象数组转JSON
//数组转json串
var arr = [1,2,3, { a : 1 } ];
JSON.stringify( arr );
4、JSON转JS数组
//json字符串转数组
var jsonStr = '[1,2,3,{"a":1}]';
var jsarr=JSON.parse( jsonStr );
alert(jsarr[0]);
5、JSON转JS对象
var jsonString = '{"bar":"property","baz":3}';
var jsObject = JSON.parse(jsonString); //转换为json对象
alert(jsObject.bar); //取json中的值
2、php出队操作?
array_shift()
Example #1 array_shift() example
<?php
$stack = array("orange", "banana", "apple", "raspberry");
$fruit = array_shift($stack);
print_r($stack);
?>Exemplul de mai sus va afișa:
Array
(
[0] => banana
[1] => apple
[2] => raspberry
)
and orange will be assigned to $fruit.
3、在数据库中存储json时最常见的错误是什么?
数组 转化 json
忘记将数组转化为json,不转化的话直接存php数组是没办法存的
第12行 12 $analyze_record_group['arg_column_fields']=json_encode($arg_column_fields);
public function saveRecordGroupData(){
if(request()->isAjax()){
$arg_id=input('arg_id');
$mef_data=input('mef_data');
$analyze_record_group=db('analyze_record_group')->find($arg_id);
$analyze_record_group['arg_update_time']=time();
$analyze_record_group['arg_data']=$mef_data;
//得記錄列名
$mef_data_1=json_decode($mef_data);
$arg_column_fields=$mef_data_1[0];
array_shift($arg_column_fields);
$analyze_record_group['arg_column_fields']=json_encode($arg_column_fields);
//dump($analyze_record_group);die;
$ans=db('analyze_record_group')->update($analyze_record_group);
if($ans===false) return false;
else return true;
}
return false;
}
4、从数据库取数据时候的注意事项是什么?
排序 order
养成排序的好习惯,不要因为数据库数据的存储而造成数据乱序
$analyze_record_groups=db('analyze_record_group')->alias('arg')->join('analyze_record ar','ar.ar_id=arg.arg_ar_id')->where($map)->order('arg_id asc')->select();
5、php如何将以行为主的二维数组转化为以列为主的二维数组?
列 行 遍历
以列-行的方式做遍历即可
//以列->行的方式將儲存數據的二維數組裡面每一個參數對應的數據都提取出來
for ($j=0;$j<$arg_data_column_length;$j++){
$arg_data_process_data2_j=[];//每一列的數據
for($i=0;$i<$arg_data_length;$i++){
$arg_data_process_data2_j[]=$val1['arg_data'][$i][$j];
}
//將列名放到數組的鍵上,指向對應的值,比如高度
$arg_key=$arg_data_process_data2_j[0];
unset($arg_data_process_data2_j[0]);
$arg_data_process_data2[$arg_key]=$arg_data_process_data2_j;
}
需求就是将下面的数组转化为以列为主
array(4) {
[0] => array(6) {
[0] => string(14) "time_param_fry"
[1] => string(10) "luminosity"
[2] => string(3) "aaa"
[3] => string(16) "temperature(℃)"
[4] => string(8) "humidity"
[5] => string(3) "bbb"
}
[1] => array(6) {
[0] => string(4) "27/2"
[1] => string(2) "11"
[2] => string(1) "1"
[3] => string(2) "17"
[4] => string(2) "73"
[5] => string(2) "34"
}
[2] => array(6) {
[0] => string(3) "1/3"
[1] => string(2) "31"
[2] => string(1) "2"
[3] => string(2) "21"
[4] => string(2) "72"
[5] => string(1) "5"
}
[3] => array(6) {
[0] => string(9) "First Day"
[1] => string(1) "1"
[2] => string(1) "3"
[3] => string(1) "2"
[4] => string(1) "3"
[5] => string(1) "6"
}
}
结果
array(6) {
["time_param_fry"] => array(3) {
[1] => string(4) "27/2"
[2] => string(3) "1/3"
[3] => string(9) "First Day"
}
["luminosity"] => array(3) {
[1] => string(2) "11"
[2] => string(2) "31"
[3] => string(1) "1"
}
["aaa"] => array(3) {
[1] => string(1) "1"
[2] => string(1) "2"
[3] => string(1) "3"
}
["temperature(℃)"] => array(3) {
[1] => string(2) "17"
[2] => string(2) "21"
[3] => string(1) "2"
}
["humidity"] => array(3) {
[1] => string(2) "73"
[2] => string(2) "72"
[3] => string(1) "3"
}
["bbb"] => array(3) {
[1] => string(2) "34"
[2] => string(1) "5"
[3] => string(1) "6"
}
}
6、jquery找到当前select所选的option的值?
find option :selected
$(this).find("option:selected").val();
jQuery获取Select选择的Text和Value:
var checkText=jQuery("#select_id").find("option:selected").text(); //获取Select选择的Text
var checkValue=jQuery("#select_id").val(); //获取Select选择的option Value
var checkIndex=jQuery("#select_id ").get(0).selectedIndex; //获取Select选择的索引值
var maxIndex=jQuery("#select_id option:last").attr("index"); //获取Select最大的索引值
jQuery添加/删除Select的Option项:
jQuery("#select_id").append("<option value='Value'>Text</option>"); //为Select追加一个Option(下拉项)
jQuery("#select_id").prepend("<option value='0'>请选择</option>"); //为Select插入一个Option(第一个位置)
jQuery("#select_id option:last").remove(); //删除Select中索引值最大Option(最后一个)
jQuery("#select_id option[index='0']").remove(); //删除Select中索引值为0的Option(第一个)
jQuery("#select_id option[value='3']").remove(); //删除Select中Value='3'的Option
jQuery("#select_id option[text='4']").remove(); //删除Select中Text='4'的Option
内容清空:
jQuery("#select_id").empty();
7、js判断为数组?
Array isArray()
1.对于Javascript 1.8.5(ECMAScript 5),变量名字.isArray( )可以实现这个目的
1 var a=[];
2 var b={};
3 Array.isArray(a);//true
4 Array.isArray(b)//false
2.如果你只是用typeof来检查该变量,不论是array还是object,都将返回‘objec'。 此问题的一个可行的答案是是检查该变量是不是object,
并且检查该变量是否有数字长度(当为空array时长度也可能为0,object的长度为undefined)。
var a=[];
var b={};
typeof a === 'object' && !isNaN(a.length)//true
typeof b === 'object' && !isNaN(b.length)//false
3.调用toString( )方法试着将该变量转化为代表其类型的string。
var a=[];
var b={};
Object.prototype.toString.call(a) === '[object Array]'//true
Object.prototype.toString.call(b) === '[object Array]'//false
8、php数据和js数据的解耦:php数据(php代码)不要放到js代码中?
html 存 js 取
json JSON.parse() html()
可以放在div标签里面,js中使用的时候直接找到这个div拿就可以了
也就是以html为中介
用html存储数据
<div id="fry_analyze_record_graph_{$vo['ar_id']}_option_data" style="display: none;">
{$vo['option_data_json']}
</div>
用js取数据
$('.fry_analyze_record_graph').change(function () {
var option_data_div_id=$(this).attr('id')+'_option_data';
var option_data=JSON.parse($('#'+option_data_div_id).html());
9、js自执行表达式的方法?
eval(string)
定义和用法
eval() 函数可计算某个字符串,并执行其中的的 JavaScript 代码。
语法
eval(string)
| 参数 | 描述 |
|---|---|
| string | 必需。要计算的字符串,其中含有要计算的 JavaScript 表达式或要执行的语句。 |
返回值
通过计算 string 得到的值(如果有的话)。
说明
该方法只接受原始字符串作为参数,如果 string 参数不是原始字符串,那么该方法将不作任何改变地返回。因此请不要为 eval() 函数传递 String 对象来作为参数。
如果试图覆盖 eval 属性或把 eval() 方法赋予另一个属性,并通过该属性调用它,则 ECMAScript 实现允许抛出一个 EvalError 异常。
抛出
如果参数中没有合法的表达式和语句,则抛出 SyntaxError 异常。
如果非法调用 eval(),则抛出 EvalError 异常。
如果传递给 eval() 的 Javascript 代码生成了一个异常,eval() 将把该异常传递给调用者。
提示和注释
提示:虽然 eval() 的功能非常强大,但在实际使用中用到它的情况并不多。
实例
例子 1
在本例中,我们将在几个字符串上运用 eval(),并看看返回的结果:
<script type="text/javascript">
eval("x=10;y=20;document.write(x*y)")
document.write(eval("2+2"))
var x=10
document.write(eval(x+17))
</script>
输出:
200
4
27
10、js的string转化为json?
JSON.parse(jsonstr)
1、jQuery插件支持的转换方式:
示例:
$.parseJSON( jsonstr ); //jQuery.parseJSON(jsonstr),可以将json字符串转换成json对象
2、浏览器支持的转换方式(Firefox,chrome,opera,safari,ie)等浏览器:
示例:
JSON.parse(jsonstr); //可以将json字符串转换成json对象
JSON.stringify(jsonobj); //可以将json对象转换成json对符串
注:ie8(兼容模式),ie7和ie6没有JSON对象,推荐采用JSON官方的方式,引入json.js。
3、Javascript支持的转换方式:
eval('(' + jsonstr + ')'); //可以将json字符串转换成json对象,注意需要在json字符外包裹一对小括号
注:ie8(兼容模式),ie7和ie6也可以使用eval()将字符串转为JSON对象,但不推荐这些方式,这种方式不安全eval会执行json串中的表达式。
4、JSON官方的转换方式:
http://www.json.org/提供了一个json.js,这样ie8(兼容模式),ie7和ie6就可以支持JSON对象以及其stringify()和parse()方法;
可以在https://github.com/douglascrockford/JSON-js上获取到这个js,一般现在用json2.js。
11、页面重新加载?
document loaction reload()
document.location.reload();
12、js获取json对象的key和val?
option_data[selected_column] []
for in ==
<script type="text/javascript">
getJson('age'); function getJson(key){
var jsonObj={"name":"傅红雪","age":"24","profession":"刺客"};
//1、使用eval方法
var eValue=eval('jsonObj.'+key);
alert(eValue);
//2、遍历Json串获取其属性
for(var item in jsonObj){
if(item==key){ //item 表示Json串中的属性,如'name'
var jValue=jsonObj[item];//key所对应的value
alert(jValue);
}
}
//3、直接获取
alert(jsonObj[''+key+'']);
}
</script>
// var option_data_selected=null;
// for(var x in option_data){
// if(x==selected_column){
// option_data_selected=option_data_selected[x]
// }
// }
var option_data_selected=option_data[selected_column];
console.log(option_data_selected);
二、内容在总结中
m_Orchestrate learning system---三十五、php数据和js数据的解耦:php数据(php代码)不要放到js代码中的更多相关文章
- JMeter学习(三十五)使用jmeter来发送json/gzip格式数据
一.使用jmeter来发送gzip数据 有时候我们需要模拟在客户端将数据压缩后, 发送(post)到服务器端. 通常这种情况,会发生在移动终端上. 这样做的好处, 是可以节省流量. 当然, 服务器返 ...
- JAVA之旅(三十五)——完结篇,终于把JAVA写完了,真感概呐!
JAVA之旅(三十五)--完结篇,终于把JAVA写完了,真感概呐! 这篇博文只是用来水经验的,写这个系列是因为我自己的java本身也不是特别好,所以重温了一下,但是手比较痒于是就写出了这三十多篇博客了 ...
- FreeSql (三十五)CodeFirst 自定义特性
比如项目内已经使用了其它 orm,如 efcore,这样意味着实体中可能存在 [Key],但它与 FreeSql [Column(IsPrimary = true] 不同. Q: FreeSql 实体 ...
- NeHe OpenGL教程 第三十五课:播放AVI
转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...
- Deep learning:三十八(Stacked CNN简单介绍)
http://www.cnblogs.com/tornadomeet/archive/2013/05/05/3061457.html 前言: 本节主要是来简单介绍下stacked CNN(深度卷积网络 ...
- Gradle 1.12用户指南翻译——第三十五章. Sonar 插件
本文由CSDN博客万一博主翻译,其他章节的翻译请参见: http://blog.csdn.net/column/details/gradle-translation.html 翻译项目请关注Githu ...
- SQL注入之Sqli-labs系列第三十四关(基于宽字符逃逸POST注入)和三十五关
开始挑战第三十四关和第三十五关(Bypass add addslashes) 0x1查看源码 本关是post型的注入漏洞,同样的也是将post过来的内容进行了 ' \ 的处理. if(isset($_ ...
- Python进阶(三十五)-Fiddler命令行和HTTP断点调试
Python进阶(三十五)-Fiddler命令行和HTTP断点调试 一. Fiddler内置命令 上一节(使用Fiddler进行抓包分析)中,介绍到,在web session(与我们通常所说的se ...
- centos shell脚本编程1 正则 shell脚本结构 read命令 date命令的用法 shell中的逻辑判断 if 判断文件、目录属性 shell数组简单用法 $( ) 和${ } 和$(( )) 与 sh -n sh -x sh -v 第三十五节课
centos shell脚本编程1 正则 shell脚本结构 read命令 date命令的用法 shell中的逻辑判断 if 判断文件.目录属性 shell数组简单用法 $( ) 和$ ...
- 剑指Offer(三十五):数组中的逆序对
剑指Offer(三十五):数组中的逆序对 搜索微信公众号:'AI-ming3526'或者'计算机视觉这件小事' 获取更多算法.机器学习干货 csdn:https://blog.csdn.net/bai ...
随机推荐
- 2:1 Strus2架构
一: 二: 表示:当以/login或者login.do表示的请求过来,就使用class指定的LoginAction类来处理,处理完了返回一个结果字符串,若果结果字符串是"fail" ...
- [转]Mac Appium环境安装
原文:https://blog.csdn.net/dongqiushan/article/details/53326518 1.安装JDK; 2.安装Android SDK; 3.安装brew; 4. ...
- 隐马尔可夫模型(HMM)学习笔记一
学习了李航的<统计学习方法>中隐马尔可夫模型(Hidden Markov Model, HMM),这里把自己对HMM的理解进行总结(大部分是书本原文,O(∩_∩)O哈哈~,主要是想利用py ...
- OS X 下动态库的引用
foo.c #include <stdio.h> void foo(void) { printf("foo.\n"); } main.c #include <st ...
- 20165207 Exp3 免杀原理与实践
Exp3 免杀原理与实践 1.实验内容 1.1.使用msf 1.1.1. 确定基准线 首先看kali的ip 直接msfvenom的结果,不加其他的东西: 使用VirusTotal得到的检测这个程序得到 ...
- [分享] 采用opencv_cascadetrain进行训练的步骤及注意事项 [复制链接]
http://f.dataguru.cn/thread-725364-1-1.html 很有用的一个帖子 转自:http://blog.csdn.net/xidianzhimeng/article/d ...
- Python入门之python可变对象与不可变对象
本文分为如下几个部分 概念 地址问题 作为函数参数 可变参数在类中使用 函数默认参数 类的实现上的差异 概念 可变对象与不可变对象的区别在于对象本身是否可变. python内置的一些类型中 可变对象: ...
- expect交互式创建账号密码
这个脚本是我在建立samba用户的时候用到的,一开始我是一步一步的操作,后来嫌麻烦了,就写了这个脚本,也学习了一下expect. #!/usr/bin/expectset user [lindex $ ...
- 20144303石宇森 《网络对抗》 WEB基础实践
20144303石宇森 <网络对抗> WEB基础实践 实验后回答问题 一.什么是表单 表单是一个包含表单元素的区域.用form来定义. HTML是静态显示网页的,无法跟服务器进行交互,所以 ...
- 在Visual C#中使用XML指南之读取XML
网站:http://www.yesky.com/155/1915155all.shtml#p1915155