JSON 常用类型处理
		
		
 2015/06/16 11:54 | by 刘新修 ]
		
- var str='{"weatherinfo": [{"city": "北京","city_en": "beijing", "cityid": "101130101","date": "","date_y": "2014年1月23日", "wind6": "微风"}]}';
 - var obj=JSON.parse(str);
 - var yy=JSON.stringify(obj);
 - alert(yy)
 
		
 JS设置数组随机取值,支持多个不重复【实例】
		
		
 2015/06/12 18:10 | by 刘新修 ]
		JS设置数组随机取值,支持多个不重复【实例】
- <!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>无标题文档</title>
 - </head>
 - <body Arrdata="1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33">
 - </body>
 - <script type="text/javascript" src="http://code.liuxinxiu.com/lib/zepto/zepto-1.1.6.js"></script>
 - <script language="javascript">
 - //从一个给定的数组arr中,随机返回num个不重复项
 - function getArrayItems(arr, num) {
 - //新建一个数组,将传入的数组复制过来,用于运算,而不要直接操作传入的数组;
 - var temp_array = new Array();
 - for (var index in arr) {
 - temp_array.push(arr[index]);
 - }
 - //取出的数值项,保存在此数组
 - var return_array = new Array();
 - for (var i = 0; i<num; i++) {
 - //判断如果数组还有可以取出的元素,以防下标越界
 - if (temp_array.length>0) {
 - //在数组中产生一个随机索引
 - var arrIndex = Math.floor(Math.random()*temp_array.length);
 - //将此随机索引的对应的数组元素值复制出来
 - return_array[i] = temp_array[arrIndex];
 - //然后删掉此索引的数组元素,这时候temp_array变为新的数组
 - temp_array.splice(arrIndex, 1);
 - } else {
 - //数组中数据项取完后,退出循环,比如数组本来只有10项,但要求取出20项.
 - break;
 - }
 - }
 - return return_array;
 - }
 - //测试
 - var ArrData=$("body").attr("Arrdata");
 - //var ArrList=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33];
 - var data=ArrData.split(",");//已经是数组,直接可以用str[0]去取了
 - //alert(str[1])
 - //alert(getArrayItems(arr,2));
 - var html=getArrayItems(data,2);
 - for(var i=0;i<html.length;i++){
 - alert(html[i])
 - }
 - document.write(html)
 - </script>
 - </html>
 
		
  JS遍历2层DOM装入数组转JSON【实例】
		
		
 2015/06/12 15:42 | by 刘新修 ]
		JS遍历2层DOM装入数组转JSON【实例】
- <!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>无标题文档</title>
 - <style>
 - *{ margin:0; padding:0;}
 - body{ color:#333; font-family:'Microsoft Yahei'; font-size:16px;}
 - ul,li{ list-style:none; line-height:30px;}
 - .conbox{ padding:10px;}
 - .conbox .selected{ color:#CC0033}
 - .conbox .lis span{ padding:0 5px;}
 - </style>
 - </head>
 - <body arrData="111,222,333,444,555,666">
 - <div class="conbox">
 - <ul class="lisbox">
 - <li data-qId="11" n="aaa" class="lis selected"><span class="on">111c</span><span class="on">222c</span><span class="on">333c</span></li>
 - <li data-qId="22" n="bbb" class="lis">bbb</li>
 - <li data-qId="33" n="ccc" class="lis selected"><span class="on">111a</span><span class="on">222a</span><span class="on">333a</span></li>
 - <li data-qId="44" n="ddd" class="lis">ddd</li>
 - <li data-qId="55" n="eee" class="lis selected"><span class="on">111b</span><span class="on">222b</span><span class="on">333b</span></li>
 - <li data-qId="66" n="fff" class="lis">fff</li>
 - </ul>
 - </div>
 - <div id="submitBtn" style=" width:100%; height:50px; line-height:50px; text-align:center; color:#fff; background:#CC0000">点击事件</div>
 - </body>
 - <script type="text/javascript" src="http://code.liuxinxiu.com/lib/zepto/zepto-1.1.6.js"></script>
 - <script type="text/javascript">
 - $("#submitBtn").on("click",function(){
 - /********* 声明变量获取节点 ***************/
 - var qList=$(".lisbox li.selected"),qLen=qList.length,arr=[];
 - /********* 循环第一层问题 ***********/
 - for(var i=0;i<qLen;i++){
 - /**** var $anList=$qList.eq(i).find("[name=an" + i + "]:checked"),subArr=[]; ****/
 - var anList=qList.eq(i).find(".on"),subArr=[];
 - var qid=qList.eq(i).attr("data-qId");
 - /***** 循环第二层答案 **********/
 - for(var key=0;key<anList.length;key++){
 - subArr.push(anList.eq(key).text());
 - }
 - /***** 添加到整体数组 ************/
 - arr.push({Question:qid,Answer:subArr});
 - }
 - /***** 转化成JSON结构字符串 *******/
 - var subArrst=JSON.stringify(subArr);
 - var jsondata=JSON.stringify(arr);
 - /***** 使用replace替换"号为空、可全部 ******/
 - var _subArrst=subArrst.replace(/"/g,"");
 - var _datalist=jsondata.replace(/"/g,"");
 - var _dataJson={guId:111222,eventId:11,plat:5,datalist:subArrst};
 - alert(_datalist)
 - });
 - </script>
 - </html>
 
		
 JSTL 与 JSP 或者 Java 相互传递变量的代码
		
		
 2015/06/08 11:20 | by 刘新修 ]
		两种方式
		
 Nginx Post最大提交数据限制
		
		
 2015/05/13 20:39 | by 刘新修 ]
		原以为是php本身的限制,查看配置文件无论是POST还是单个文件上传都满足要求:
#post最大提交量
post_max_size = 8M
#php给个文件最大限制
upload_max_filesize = 2M
************************************************************************
NGINX错误日志显示:
Nginx 【client intended to send too large body: 1065755 bytes】
在Nginx.conf文件中添加:
client_max_body_size 64M; #多少M根据实际情况填写
重启即可!
		
 PHP判断POST或GET请求,返回提交服务器的JSON数据(支持跨越)
		
		
 2015/04/17 10:32 | by 刘新修 ]
		注明:暂时不支持跨域名下GET请求
http://192.168.66.90:8080//php/POST_GET.php
- <?php
 - //目前暂不支持跨域GET请求
 - header('Content-type: text/json');
 - html_entity_decode($string, ENT_QUOTES, 'UTF-8');
 - //回调参数设置
 - $param="callback";
 - $callback=$_REQUEST[$param];
 - //判断请求参数就是同域名下AJAX请求
 - if(!isset($callback)){
 - //返回多个Id
 - if($_POST){
 - exit(json_encode($_POST));
 - }else if($_GET){
 - exit(json_encode($_GET));
 - }
 - //返回单个Id
 - if($_POST['Id']){
 - $a=$_POST['Id'];
 - //echo $a;
 - exit(json_encode($a));
 - }else if($_GET['Id']){
 - $a=$_GET['Id'];
 - //echo $a;
 - exit(json_encode($a));
 - }
 - //强制开关按钮
 - if($_POST['CT']){
 - $a=$_POST['CT'];
 - echo $a;
 - }else if($_GET['CT']){
 - $a=$_GET['CT'];
 - echo $a;
 - }
 - }
 - //判断请求参数存在就是实现JSONP跨越提交
 - if(isset($callback)){
 - //强制开关按钮
 - if($_POST['Id']){
 - $a=$_POST['Id'];
 - $b=json_encode($a);
 - $str=$callback."(".$b.")";
 - }else{
 - $a=$_POST['CT'];
 - $str=$callback."(".$a.")";
 - }
 - echo $str;
 - }
 - ?>
 
http://192.168.66.90:8080/Ajax/s6.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>ajax test</title>
 - <script type="text/javascript" src="http://code.jquery.com/jquery.min.js"></script>
 - <script type="text/javascript">
 - $(document).ready(function(){
 - //点击请求http接口,删除多条数据
 - $(".delall").click(function(){
 - //拼写成JSON数据格式,提交http接口JSON不需要转字符串
 - //alert(JSON.stringify(obj))
 - var val=$(".dellink.on").map(function(){
 - return $(this).attr("id");
 - }).get();
 - var obj={Id:val};
 - //var vot=JSON.stringify(obj);
 - //alert(obj)
 - /***** 同域名下多条ID请求
 - $.ajax({
 - url:"/php/POST_GET.php",
 - type:"post",
 - dataType:"json",
 - //jsonp:"callback",
 - data:obj,
 - success:function(data){
 - //var yy=JSON.stringify(data);
 - //alert(yy)
 - $.each(data.Id,function(i,item){
 - $('#'+item).slideUp();
 - });
 - },
 - error:function(){
 - alert("异常!");
 - }
 - });
 - */
 - /***** 跨域名多条ID请求 *****/
 - $.ajax({
 - url:"http://192.168.66.90:8080//php/POST_GET.php",
 - type:"post",
 - dataType:"jsonp",
 - jsonp:"callback",
 - data:obj,
 - success:function(data){
 - //var yy=JSON.stringify(data);
 - //alert(data)
 - $.each(data,function(i,item){
 - $('#'+item).slideUp();
 - });
 - },
 - error:function(){
 - alert("异常!");
 - }
 - });
 - });
 - //点击请求http接口,删除单条数据
 - $(".dellink").click(function() {
 - var thisId=$(this).attr("id");
 - /***** 同域名Ajax请求
 - $.ajax({
 - url:"/php/POST_GET.php",
 - type:"post",
 - dataType:"json",
 - //jsonp:"callback",
 - data:{Id:thisId},
 - success:function(data){
 - //var yy=JSON.stringify(data);
 - //alert(yy)
 - $.each(data,function(i,item){
 - $('#'+item).slideUp();
 - });
 - },
 - error:function(){
 - alert("异常!");
 - }
 - });
 - *****/
 - /****** 可支持jsonp跨域名请求 */
 - $.ajax({
 - url:"http://192.168.66.90:8080//php/POST_GET.php",
 - type:"post",
 - dataType:"jsonp",
 - jsonp:"callback",
 - data:{Id:thisId},//{Id:"44554547"}
 - success:function(data){
 - var yy=JSON.stringify(data);
 - //alert(data)
 - if(thisId==data){
 - $('#'+data).slideUp();
 - }
 - },
 - error:function(){
 - alert("异常!");
 - }
 - });
 - });
 - //控制开关(服务器返回0或1)
 - $(".control").click(function(){
 - var hason=$(this).hasClass("on");
 - /***** 同域名下访问http接口
 - if(hason){
 - $.ajax({
 - url:"/php/POST_GET.php",
 - type:"post",
 - dataType:"json",
 - data:{CT:"0"},
 - success:function(data){
 - $(".control").removeClass("on");
 - $(".control").html("广告关闭")
 - },
 - error:function(){
 - alert("异常!");
 - }
 - });
 - }else{
 - $.ajax({
 - url:"/php/POST_GET.php",
 - type:"post",
 - dataType:"json",
 - data:{CT:"1"},
 - success:function(data){
 - $(".control").addClass("on");
 - $(".control").html("广告开启")
 - },
 - error:function(){
 - alert("异常!");
 - }
 - });
 - }
 - */
 - /***** 跨域名访问http接口 *****/
 - if(hason){
 - $.ajax({
 - url:"http://192.168.66.90:8080//php/POST_GET.php",
 - type:"post",
 - dataType:"jsonp",
 - jsonp:"callback",
 - data:{CT:"0"},
 - success:function(data){
 - if(data==0){
 - $(".control").removeClass("on");
 - $(".control").html("广告关闭")
 - }
 - },
 - error:function(){
 - alert("异常!");
 - }
 - });
 - }else{
 - $.ajax({
 - url:"http://192.168.66.90:8080//php/POST_GET.php",
 - type:"post",
 - dataType:"jsonp",
 - jsonp:"callback",
 - data:{CT:"1"},
 - success:function(data){
 - if(data==1){
 - $(".control").addClass("on");
 - $(".control").html("广告开启")
 - }
 - },
 - error:function(){
 - alert("异常!");
 - }
 - });
 - }
 - });
 - //control end
 - });
 - </script>
 - </head>
 - <body>
 - <style type="text/css">
 - body { font-family: 'Microsoft Yahei'; margin:0; padding:0; font-weight:normal}
 - .dellink,.delall,.list .control{height:60px; line-height:60px; color:#fff; width:600px; font-size:22px; text-align:center; margin:2px auto; cursor:pointer;}
 - .dellink{ display:block; background:#000;}
 - .delall{ background: #CC3366; }
 - .list .control{ background:#CC0033; }
 - .list .on{background:#006633;}
 - </style>
 - <a class="dellink on" id="1001">删除单条数据 0111</a>
 - <a class="dellink" id="1002">删除单条数据 022</a>
 - <a class="dellink on" id="1003">删除单条数据 0333</a>
 - <a class="dellink on" id="1004">删除单条数据 044</a>
 - <a class="dellink" id="1005">删除单条数据 0555</a>
 - <div class="delall">请求http接口【并删除多条数据】</div>
 - <div class="list">
 - <div class="control on">广告开启</div>
 - </div>
 - </body>
 - </html>
 
		
 如何成为一名优秀的前端工程师 (share)
		
		
 2015/03/25 09:28 | by 刘新修 ]
		一、技术的必须的
作为一名最基础的前端工程师你必须掌握HTML、CSS和JavaScript。三者必须同时精通,类似我这样对前端知识一知半解的,一遇到问题就停下工作就四处搜索解决方案的,首先就算不上一个合格的前端人员。像我这样的如果当了前端工程师那工期肯定是不能保证的。合格的前端工程师第一要学会的就是在没有任何外来帮助的情况下(包括搜索引擎),能够完成大多数任务。
以下知识点是作为一个前端工程师必须了解和熟悉的:
- DOM结构——两个节点之间可能存在哪些关系以及如何在节点之间任意移动。
 - DOM操作——怎样添加、移除、移动、复制、创建和查找节点。
 - 事件——怎样使用事件以及IE和DOM事件模型之间存在哪些主要差别。
 - XMLHttpRequest——这是什么、怎样完整地执行一次GET请求、怎样检测错误。
 - 严格模式与混杂模式——如何触发这两种模式,区分它们有何意义。
 - 盒模型——外边距、内边距和边框之间的关系,IE < 8中的盒模型有什么不同。
 - 块级元素与行内元素——怎么用CSS控制它们、它们怎样影响周围的元素以及你觉得应该如何定义它们的样式。
 - 浮动元素——怎么使用它们、它们有什么问题以及怎么解决这些问题。
 - HTML与XHTML——二者有什么区别,你觉得应该使用哪一个并说出理由。
 - JSON——它是什么、为什么应该使用它、到底该怎么使用它,说出实现细节来。
 
上述这些知识点都应该是你“想都不用想”就知道的东西。除了上述的前端知识,也还需学会至少一门后端编程语言,让你自己学会如何与后端进行更好的交互。
很多前端工程师对一些库非常的熟悉,jQuery,Bootstrap等,但是对于库的熟悉并不能提现你的优秀,真正优秀的是那些理解库背后的机制,特别是能够徒手写出一个自己的库的人。
真正合格的前端工程师是能实现具体的功能要求,而优秀的前端工程师需要解决的问题是寻找一个最优的解决方案。
二、沟通很重要
优秀的前端工程师需要具备良好的沟通能力,因为你的工作与很多人的工作息息相关。在任何情况下,前端工程师至少都要满足下列四类客户的需求。
- 产品经理——这些是负责策划应用程序的一群人。他们能够想象出怎样通过应用程序来满足用户需求,以及怎样通过他们设计的模式赚到钱(但愿如此)。一般来说,这些人追求的是丰富的功能。
 - UI设计师——这些人负责应用程序的视觉设计和交互模拟。他们关心的是用户对什么敏感、交互的一贯性以及整体的好用性。他们热衷于流畅靓丽但并不容易实现的用户界面。
 - 项目经理——这些人负责实际地运行和维护应用程序。项目管理的主要关注点,无外乎正常运行时间——应用程序始终正常可用的时间、性能和截止日期。项目经理追求的目标往往是尽量保持事情的简单化,以及不在升级更新时引入新问题。
 - 最终用户——当然是应用程序的主要消费者。尽管我们不会经常与最终用户打交道,但他们的反馈意见至关重要;没人想用的应用程序毫无价值。最终用户要求最多的就是对个人有用的功能,以及竞争性产品所具备的功能。
 
不要在没有作出评估之前就随便接受某项任务。你必须始终记住,一定先搞清楚别人到底想让你干什么,不能简单地接受“这个功能有问题”之类的大概其的说法。而且,你还要确切地知道这个功能或设计的真正意图何在。“加一个按钮”之类的任务并不总意味着你最后会加一个按钮。还可能意味着你会找产品经理,问一问这个按钮有什么用处,然后再找UI设计师一块探讨按钮是不是最佳的交互手段。要成为优秀的前端工程师,这种沟通至关重要。
那么,前端工程师应该最关注哪些人的意见呢?答案是所有这四类人。优秀的前端工程师必须知道如何平衡这四类人的需求和预期,然后在此基础上拿出最佳解决方案。由于前端工程师处于与这四类人沟通的交汇点上,因此其沟通能力的重要性不言而喻。如果一个非常酷的新功能因为会影响前端性能,必须删繁就简,你怎么跟产品经理解释?再比如,假设某个设计如果不改回原方案可能会给应用程序造成负面影响,你怎么才能说服UI设计师?作为前端工程师,你必须了解每一类人的想法从何而来,必须能拿出所有各方都能接受的解决方案。从某种意义上说,优秀的前端工程师就像是一位大使,需要时刻抱着外交官的心态来应对每一天的工作。
专业技术可能会引领你进入成为前端工程师的大门,但只有运用该技术创造的应用程序以及你跟他人并肩协同的能力,才会真正让你变得优秀。
三、提升无止境
优秀的前端工程师应该具备快速学习能力。推动Web发展的技术并不是静止不动的,这些技术几乎每天都在变化,如果没有快速学习能力,你就跟不上Web发展的步伐。你必须不断提升自己,不断学习新技术、新模式;仅仅依靠今天的知识无法适应未来。Web的明天与今天必将有天壤之别,而你的工作就是要搞清楚如何通过自己的Web应用程序来体现这种翻天覆地的变化。
四、前端开发知识架构
- 前端工程师
- 浏览器
 - 编程语言
 - 切页面
 - 开发工具
 - 代码质量
 - 前端库/框架
 - 前端标准/规范
- HTTP1.1
 - ECMAScript3/5
 - W3C/DOM/BOM/XHTML/XML/JSON/JSONP
 - CommonJS/AMD
 - HTML5/CSS3
 
 - 性能
 - 编程知识储备
- 数据结构
 - OOP/AOP
 - 原型链/作用域链
 - 闭包
 - 函数式编程
 - 设计模式
 - Javascript Tips
 
 - 部署流程
 - 代码组织
- 类库模块化
- CommonJS/AMD
 - YUI3模块
 
 - 业务逻辑模块化
 - 文件加载
 
 - 类库模块化
 - 安全
 - 移动Web
- HTML5/CSS3
 - 响应式设计
 - Zeptojs/iScroll
 - V5/Sencha Touch
 - PhoneGap
 - jQuery Mobile
 
 - JavaScript生态
- MongoDB/CouchDB
 
 - 前沿技术社区/会议
- D2/WebRebuild
 - NodeParty/W3CTech/HTML5梦工厂
 - JSConf/沪JS(JSConf.cn)
 - QCon/Velocity/SDCC
 - JSConf/NodeConf
 - YDN/YUIConf
 
 - 计算机知识储备
- 编译原理
 - 计算机网络
 - 操作系统
 - 算法原理
 - 软件工程/软件测试原理
 
 - 软技能
- 知识管理/总结分享
 - 沟通技巧/团队协作
 - 需求管理/PM
 - 交互设计/可用性/可访问性知识
 
 - 可视化
 
 - 后端工程师
- 编程语言
- C/C++/Java/PHP/Ruby/Python/…
 
 - 数据库
- SQL
 - MySQL/MongoDB/Oracle
 
 - 操作系统
- Unix/Linux/OS X/Windows
 
 - 数据结构
 
 - 编程语言
 
		
 使用原生JS写Ajax与后端PHP跨越请求实例
		
		
 2015/03/24 15:57 | by 刘新修 ]
		http://192.168.66.90:8080/php/Ajax_.php?callback=
- <?php
 - //公共声明
 - header('Content-type: text/json');
 - html_entity_decode($string, ENT_QUOTES, 'UTF-8');
 - //回调参数设置
 - $param="callback";
 - $callback=$_REQUEST[$param];
 - //自造Json数据
 - $str2='[{"id":"1","name":"测试1"},{"id":"2","name":"测试2"}]';
 - $str=$callback."(".$str2.")";
 - //判断请求参数存在就会输出Json数据
 - //if(isset($callback)&&!empty($callback)){
 - if(isset($callback)){
 - if (isset($_POST["mail"])&&!emptyempty($_POST["mail"])){
 - echo "1";
 - }else{
 - //echo "N0, mail is not set";
 - echo $str;
 - }
 - }
 - //判断请求参数不存在就输出错误信息
 - if(!isset($callback)){
 - header("Content-type: text/html; charset=utf-8");
 - $str="<h1>400 Required String parameter '{$param}' is not present</h1><hr /><small>http Request with error params: none callback function</small>";
 - echo $str;
 - //strip_tags() 函数剥去 HTML、XML 以及 PHP 的标签
 - //echo strip_tags($str);
 - }
 - ?>
 
http://192.168.66.90:8080/html/test/js_Ajax.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>无标题文档</title>
 - </head>
 - <body>
 - <input value="张三" type="text" style="width:96%; background: #F1F1ED; color:#000; text-align:center; font-size:6em; padding:0.2em; margin-bottom:0.5em; border:0.1em #333 solid " id="input"/>
 - <div style=" width:100%; background:#000; color:#fff; text-align:center; font-size:6em; cursor:pointer; padding:0.2em;" id="html">点击事件</div>
 - <script type="text/javascript">
 - /**
 - * 复杂的ajax封装
 - * @version 1.0
 - *
 - * 用法
 - * var xmlhttp = new YAjax();
 - * xmlhttp.request({
 - * url : "./demo.php", // get请求时 可以这样写 "./demo.php?name=zhangsan"
 - * method : "POST",
 - * data : "name=李四", // 支持json传值 {"name":"zhangsan"} get时不用该参数
 - * receiveType : "html", // json html or xml
 - * timeout : 3000, // 3秒
 - * success : function(d) {alert(d);},
 - * error : function(xmlhttp){alert('timeout');}
 - * });
 - *
 - */
 - function YAjax() {
 - thisthis._self = this;
 - thisthis.xmlhttp = this.init();
 - }
 - YAjax.prototype = {
 - constructor : YAjax,
 - // 初始化xmlhttpRequest
 - init : function() {
 - var xmlhttp = null;
 - // 针对不同浏览器建立这个对象的不同方式写不同代码
 - if(window.XMLHttpRequest) {
 - xmlhttp = new XMLHttpRequest();
 - //针对某些特定版本的Mozillar浏览器的BUG进行修正
 - if(xmlhttp.overrideMimeType) {
 - xmlhttp.overrideMimeType("text/xml");
 - }
 - } else if (window.ActiveXObject) {
 - var activexName = ['MSXML2.XMLHTTP', 'Microsoft.XMLHTTP'];
 - for (var i=0; i<activexName.length; i++) {
 - try {
 - xmlhttp = new ActiveXObject(activexName[i]);
 - break;
 - } catch(e) {}
 - }
 - }
 - return xmlhttp;
 - },
 - extend : function(destination, source, override) {
 - if(undefined == override) override = true;
 - if(typeof destination != "object" && typeof destination != "function") {
 - if(!override)
 - return destination;
 - else
 - destination = {};
 - }
 - var property = '';
 - for(property in source) {
 - if(override || !(property in destination)) {
 - destination[property] = source[property];
 - }
 - }
 - return destination;
 - },
 - // json to string {name: 'lisi', age: 10} --> name=lisi&age=10
 - json2String : function(jsonData) {
 - var strArr = [];
 - for(var k in jsonData) {
 - strArr.push(k + "=" + jsonData[k]);
 - }
 - return strArr.join("&");
 - },
 - // 发送http 请求
 - request : function(opt) {
 - var _self = this,
 - isTimeout = false,
 - timeFlag = 0,
 - options = {
 - url : "", // string
 - data : "", // json or string
 - method : "POST",
 - receiveType : "html", // html json or xml
 - timeout : 7000,
 - async : true,
 - success : function(){alert("define your success function");},
 - error : function(xmlhttp){}
 - };
 - if("data" in opt) {
 - if(typeof opt.data == "string"){} else {opt.data = this.json2String(opt.data); }
 - }
 - options = this.extend(options, opt);
 - this.xmlhttp.onreadystatechange = function(){
 - if(_self.xmlhttp.readyState == 4) {
 - if(!isTimeout && _self.xmlhttp.status == 200) {
 - clearTimeout(timeFlag);
 - var t = options.receiveType.toLowerCase();
 - if(t == "html") {
 - options.success(_self.xmlhttp.responseText);
 - } else if(t == "xml") {
 - options.success(_self.xmlhttp.responseXML);
 - } else if(t == 'json') {
 - try {
 - var obj = JSON.parse(_self.xmlhttp.responseText);
 - options.success(obj);
 - } catch(e) {
 - var str = '(' + _self.xmlhttp.responseText + ')'; //json字符串
 - options.success(eval(str));
 - }
 - } else {}
 - } else {
 - clearTimeout(timeFlag);
 - options.error(_self.xmlhttp);
 - }
 - }
 - };
 - timeFlag = setTimeout(function(){
 - if(_self.xmlhttp.readyState != 4) {
 - isTimeout = true;
 - _self.xmlhttp.abort();
 - clearTimeout(timeFlag);
 - }
 - }, options.timeout);
 - this.xmlhttp.open(options.method.toUpperCase(), options.url, options.async); //打开与服务器连接
 - if(options.method.toUpperCase() == "POST") {
 - this.xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); //post方式要设置请求类型
 - this.xmlhttp.send(options.data); //发送内容到服务器
 - } else {
 - this.xmlhttp.send(null);
 - }
 - }
 - };
 - var text=document.getElementById("input").value;
 - var html=document.getElementById("html");
 - html.onclick=function(){
 - var xmlhttp = new YAjax();
 - xmlhttp.request({
 - url:"http://192.168.66.90:8080/php/Ajax_.php?callback=", // get请求时 可以这样写 "./demo.php?name=zhangsan"
 - method:"POST",
 - data:{"mail":"zhangsan@163.com"}, // 支持json传值 {"name":"zhangsan"} get时不用该参数 "name=李四"
 - receiveType:"json", // json html or xml
 - timeout:3000, // 3秒
 - success:function(data){
 - //JSON.stringify(data); //可以将json对象转换成json对符串
 - //JSON.parse(jsonstr); //可以将json字符串转换成json对象
 - if(data==1){
 - alert("传参已被服务器接收,"+"输入框内容:"+text)
 - }
 - else{
 - alert(JSON.stringify(data[0].name));
 - }
 - },
 - error:function(xmlhttp){alert('timeout');}
 - });
 - };
 - </script>
 - </body>
 - </html>
 
重启服务 sh /usr/local/resin/bin/resin.sh -server youyuan restart
查看日志
- root@pts/4 # tail -f /usr/local/resin/log/jvm-y
 - jvm-youyuan.log jvm-yylc.log
 - 192.168.3.150 [/www/www.youyuan.com/web/WEB-INF/classes] 2015-03-09 17:27:20
 - root@pts/4 # tail -f /usr/local/resin/log/jvm-y
 - jvm-youyuan.log jvm-yylc.log
 - 192.168.3.150 [/www/www.youyuan.com/web/WEB-INF/classes] 2015-03-09 17:27:20
 - root@pts/4 # tail -f /usr/local/resin/log/jvm-youyuan.log
 - Resin-4.0.35 (built Tue, 12 Feb 2013 10:05:50 PST)
 - Copyright(c) 1998-2012 Caucho Technology. All rights reserved.
 - Using Resin(R) Open Source under the GNU Public License (GPL).
 - See http://www.caucho.com for information on Resin Professional,
 - including caching, clustering, JNI acceleration, and OpenSSL integration.
 - Starting Resin on Mon, 09 Mar 2015 17:27:23 +0800 (CST)
 
		
 php数组转Json
		
		
 2015/02/13 17:20 | by 刘新修 ]
		
- <?php
 - header("Content-Type: text/html; charset=utf-8");
 - $mydb=mysql_connect("localhost","root","root");
 - if (!$mydb){
 - die('Could not connect:'. mysql_error());
 - }
 - $db_selected=mysql_select_db("mysql",$mydb);
 - //$sql = "SELECT * from Person WHERE Lastname='Adams'";
 - $sql="SELECT * from user";
 - $result=mysql_query($sql,$mydb);
 - //print_r(mysql_fetch_array($result));
 - //处理输出数组格式
 - //$db1=mysql_query("select * from `tb_info`");
 - /*
 - $arr=array();
 - while($rows=mysql_fetch_array($db1)){
 - $key=$rows['id']
 - $arr[$key] = $rows['qucount']
 - }
 - */
 - /**************************************************************
 - *
 - * 使用特定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)
 - {
 - static $recursive_counter = 0;
 - if (++$recursive_counter > 1000) {
 - die('possible deep recursion attack');
 - }
 - 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]);
 - }
 - }
 - }
 - $recursive_counter--;
 - }
 - /**************************************************************
 - *
 - * 将数组转换为JSON字符串(兼容中文)
 - * @param array $array 要转换的数组
 - * @return string 转换得到的json字符串
 - * @access public
 - *
 - *************************************************************/
 - function JSON($array) {
 - arrayRecursive($array, 'urlencode', true);
 - $json = json_encode($array);
 - return urldecode($json);
 - }
 - $array = array
 - (
 - 'Name'=>'希亚',
 - 'Age'=>20
 - );
 - /*
 - $array=array (
 - 0 =>
 - array (
 - 'icon' =>
 - array (
 - 'hasPhoto' => '0',
 - 'photoPath' => '/resources/v20/images/boy.png',
 - ),
 - 'age' => '24',
 - 'name' => '男士',
 - 'province' => '北京',
 - 'lottery' => '100元的爱玛电动车代金券',
 - 'mobile' => '',
 - ),
 - 1 =>
 - array (
 - 'icon' =>
 - array (
 - 'hasPhoto' => '0',
 - 'photoPath' => '/resources/v20/images/boy.png',
 - ),
 - 'age' => '24',
 - 'name' => '男士',
 - 'province' => '北京',
 - 'lottery' => '100元的爱玛电动车代金券',
 - 'mobile' => '',
 - ),
 - 2 =>
 - array (
 - 'icon' =>
 - array (
 - 'hasPhoto' => '0',
 - 'photoPath' => '/resources/v20/images/boy.png',
 - ),
 - 'age' => '25',
 - 'name' => '男士',
 - 'province' => '上海',
 - 'lottery' => '100元的爱玛电动车代金券',
 - 'mobile' => '',
 - ),
 - 3 =>
 - array (
 - 'icon' =>
 - array (
 - 'hasPhoto' => '0',
 - 'photoPath' => '/resources/v20/images/boy.png',
 - ),
 - 'age' => '24',
 - 'name' => '男士',
 - 'province' => '北京',
 - 'lottery' => '100元的爱玛电动车代金券',
 - 'mobile' => '186****1046',
 - ),
 - 4 =>
 - array (
 - 'icon' =>
 - array (
 - 'hasPhoto' => '0',
 - 'photoPath' => '/resources/v20/images/boy.png',
 - ),
 - 'age' => '24',
 - 'name' => '男士',
 - 'province' => '北京',
 - 'lottery' => '200元的爱玛电动车代金券',
 - 'mobile' => '186****1046',
 - ),
 - 5 =>
 - array (
 - 'icon' =>
 - array (
 - 'hasPhoto' => '0',
 - 'photoPath' => '/resources/v20/images/boy.png',
 - ),
 - 'age' => '24',
 - 'name' => '男士',
 - 'province' => '北京',
 - 'lottery' => '100元的爱玛电动车代金券',
 - 'mobile' => '',
 - ),
 - 6 =>
 - array (
 - 'icon' =>
 - array (
 - 'hasPhoto' => '0',
 - 'photoPath' => '/resources/v20/images/boy.png',
 - ),
 - 'age' => '24',
 - 'name' => '男士',
 - 'province' => '北京',
 - 'lottery' => '100元的爱玛电动车代金券',
 - 'mobile' => '',
 - ),
 - 7 =>
 - array (
 - 'icon' =>
 - array (
 - 'hasPhoto' => '0',
 - 'photoPath' => '/resources/v20/images/boy.png',
 - ),
 - 'age' => '24',
 - 'name' => '男士',
 - 'province' => '北京',
 - 'lottery' => '100元的爱玛电动车代金券',
 - 'mobile' => '',
 - ),
 - 8 =>
 - array (
 - 'icon' =>
 - array (
 - 'hasPhoto' => '0',
 - 'photoPath' => '/resources/v20/images/boy.png',
 - ),
 - 'age' => '24',
 - 'name' => '男士',
 - 'province' => '河南',
 - 'lottery' => '100元的爱玛电动车代金券',
 - 'mobile' => '',
 - ),
 - 9 =>
 - array (
 - 'icon' =>
 - array (
 - 'hasPhoto' => '0',
 - 'photoPath' => '/resources/v20/images/boy.png',
 - ),
 - 'age' => '24',
 - 'name' => '男士',
 - 'province' => '北京',
 - 'lottery' => '100元的爱玛电动车代金券',
 - 'mobile' => '',
 - ),
 - 10 =>
 - array (
 - 'icon' =>
 - array (
 - 'hasPhoto' => '1',
 - 'photoPath' => '/201412/11/11/49/1418269782350A03EA57_c.jpg',
 - ),
 - 'age' => '20',
 - 'name' => '白日做梦',
 - 'province' => '北京',
 - 'lottery' => '100元的爱玛电动车代金券',
 - 'mobile' => '',
 - ),
 - );
 - */
 - echo JSON($array);
 - ?>
 




  
 
 
 
 
 


