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 ...
随机推荐
- Java中如何优雅地删除List中的元素
在工作中的许多场景下,我们都会使用到List这个数据结构,那么同样的有很多场景下需要删除List中的某一个元素或某几个元素,那么我们该如何正确无误地删除List中的元素的,今天我来教大家三种方式. 前 ...
- rpgmakermv插件(1)screenfull.js与Fullscreen.js
本文分析游戏的全屏化处理. 引入:玩家在不同情景下可能会选择全屏游戏或窗口化游戏,所以作为开发者,应该在设置中加入全屏与否的选项. 两种插件:screenfull.js与Fullscreen.js 1 ...
- VS2010/MFC编程入门之三十五(菜单:菜单及CMenu类的使用)
鸡啄米在上一节中讲的是VS2010的菜单资源,本节主要讲菜单及CMenu类的使用. CMenu类的主要成员函数 MFC为菜单的操作提供了CMenu类,下面鸡啄米就常用的几个成员函数进行简单的介绍. B ...
- 机器学习中的范数规则化 L0、L1与L2范数 核范数与规则项参数选择
http://blog.csdn.net/zouxy09/article/details/24971995 机器学习中的范数规则化之(一)L0.L1与L2范数 zouxy09@qq.com http: ...
- 新版.Net开发必备十大工具(转)
Snippet Compiler Snippet Compiler是一个基于 Windows 的小型应用程序,你可以通过它来编写.编译和运行代码.如果你具有较小的代码段,并且你不想创建完整的 Visu ...
- 本地缓存之GUAVA
项目开发中,很多配置数据需要缓存,一般来说,开发人员都会手动写HashMap,HashSet或者ConcurrentHashMap,ConcurrentHashSet缓存数据,但是这样的缓存往往存在内 ...
- Python tricks(7) -- new-style class的__slots__属性
__slots__是在python 2.2开始引入的一个新特性, 我们来看一下官方给出的解释. This class variable can be assigned a string, iterab ...
- linux常用命令:at 命令
在windows系统中,windows提供了计划任务这一功能,在控制面板 -> 性能与维护 -> 任务计划, 它的功能就是安排自动运行的任务. 通过'添加任务计划'的一步步引导,则可建立一 ...
- postman接口测试——笔记
接口测试理论: 一.接口 1.程序内部接口:方法与方法之间,模块与模块之间的交互,程序内部抛出的接口,比如bbs系统,有登录模块,发帖模块等等,那你要发帖就必须先登录,那么这两个模块就得有交互,它 ...
- Kotlin语言Web库又添一虎将:Kweb
Kweb是一个库,您可以利用它使用Kotlin编程语言轻松构建Web应用程序.从程序员的角度来看,它基本上消除了浏览器和服务器之间的分离.这意味着只操纵DOM的事件不需要进行服务器往返.由于Kweb是 ...