javascript、js操作json方法总结

相信前端的同学们对json并不陌生,接触过很多。但是很少人知道json的全称是什么,哈哈,我也是查资料知道的。(JSON JavaScript Object Notation是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,是理想的数据交换格式。)

json可以以数组传递,也可以以对象传递,我前面的文章PHP对发布版本时间轴数据处理,返回的json格式,是一个数组json,然后里面含有对象,这是json常见的格式。后来经过php的处理,结构又发生了变化,最外层是一个对象了,里面是数组和对象。

在数据传输流程中,json是以文本,即字符串的形式传递的,而JS操作的是JSON对象,所以,JSON对象和JSON字符串之间的相互转换是关键。例如:

JSON字符串:

var str1 = '{ "name": "haorooms", "sex": "man" }';

JSON对象:

var str2 = { "name": "haorooms", "sex": "man" };

一、JSON字符串转换为JSON对象

要运用上面的str1,必须运用下面的要领先转化为JSON对象(这一点在ajax返回的时候,经常遇到!):

//由JSON字符串转换为JSON对象

var obj = eval('(' + str + ')');

或者

前端部署ant+yuicompressor文件压缩+获取版本号+SSH发布

ant+yuicompressor在前端部署和服务器发布中用处极大。之前介绍的SASS可以压缩CSS,还有grunt技术等等,都很强大。我在项目中用到的是ant+yuicompressor,ant可以压缩CSS,压缩javascript,并可以传输信息和远程服务器发布!

具体ant安装请看:http://www.haorooms.com/tools/ant_book/

感谢ant高手河名同志贡献的文档,我把文档放到我的小工具中了,可以供前端开发者参阅。源文档是河明写的,我在他的基础上稍加改动,后期将对其继续完善。

下面总结一下我运用ant当中的一些知识吧:

在cmd中输入 ant -Dversion ="某某某"

在build中property可以接受穿来的某某某,代码如下

 <property name="version" value=""></property>

并可以将版本作为文件夹名称或者输出!

相关简单的操作我就不啰嗦了,下面说说css和js的压缩

javascript压缩代码如下:

    <apply executable="java" parallel="false" failonerror="true" dest="输出路径" append="false" force="true">
        <fileset dir="输出路径">
            <exclude name="**/*.min.js" />
            <include name="m/tsses/dessfault/js/zsss.js" />
            <include name="**/*.js" />
        </fileset>
        <arg line="-jar" />
        <arg path="${compressor}" />
        <arg line="--charset utf8" />
        <srcfile />
        <arg line="-o" />
        <mapper type="glob" from="*.js" to="*.js" />
        <targetfile />
    </apply>

javascript去掉空格,回车,制表位及判断空格函数

记得之前做询价平台的时候,已经在文本框做了非空判断,但是测试人员在输入全交空格之后,居然提交了。为了解决这个问题,我做了去除全交半角空格的判断。时隔几年,我总结一下js的去除空格、回车、制表位的方法!

str = str.replace(/<\/?[^>]*>/g,''); //去除HTML tag
str = str.replace(/[ | ]*\n/g,'\n'); //去除行尾空白
str = str.replace(/\n[\s| | ]*\r/g,'\n'); //去除多余空行
 str=str.replace(/ /ig,'');//去掉 
str=str.replace(/^[\s ]+|[\s ]+$/g, "");//去掉全角半角空格
str=str.replace(/[\r\n]/g,"");//去掉回车换行

上面的方法基本上能去除所有的空格,回车和制表位等等。 但是有时候我们需要去除左右空格,例如在搜索的时候。 去除左右空格方法:

function String.prototype.Trim() { return this.replace(/(^\s*)|(\s*$)/g, ""); }   // 去掉左右空格

function String.prototype.Ltrim() { return this.replace(/(^\s*)/g, ""); }            // 去掉左空格

function String.prototype.Rtrim() { return this.replace(/(\s*$)/g, ""); }            // 去掉右空格

PHP对发布版本时间轴数据处理

今天模仿360做了一个时间轴的效果,具体demo地址:http://www.haorooms.com/uploads/example/history_date/ 因为数据是后台php查询数据库得到的,如下:

[
    {
        "id": "8",
        "version_name": "werwer2342222222222222222222222222222",
        "update_time": "2014-09-11",
        "update_content": "<p>2333333333333333333333333333333333333333333333333333333333234234234</p><p>企鹅王i如金额我软件额外热金额我日Joe污染Joe往日金额我日金额我日金额我日金额我日金额王荣i金额为</p>"
    },
    {
        "id": "2",
        "version_name": "24243.55.66",
        "update_time": "2014-09-03",
        "update_content": "<p>玩儿玩儿werwerewr</p><p>werwerewrwer</p><p>玩儿玩儿</p><p>werwer</p><p><br/></p>"
    },
    {
        "id": "1",
        "version_name": "69.6.44",
        "update_time": "2014-09-02",
        "update_content": "<p><strong>温温热污染温热污染二位二位人</strong></p><p>玩儿玩儿</p><p>2013年66</p>"
    },
    {
        "id": "9",
        "version_name": "ertertert",
        "update_time": "2014-09-02",
        "update_content": "<p style=\"text-align: left;\"><strong>456456546546546</strong></p><p style=\"text-align: left;\">456546</p>"
    },
    {
        "id": "7",
        "version_name": "而额外热玩儿娃儿",
        "update_time": "2013-09-20",
        "update_content": "<p>而额外热舞热舞热舞热舞热舞热污染</p><p>werewrewrwerewrwer</p>"
    },
    {
        "id": "6",
        "version_name": "2013-09900009wer93",
        "update_time": "2013-09-04",
        "update_content": "<p>sdfewrwerwerwerwerewrewrwerewrew</p>"
    }
]

想要得到时间的字段,循环history-date这个div,所以,对查询的数据进行格式化,格式化成如下格式:

css input checkbox和radio样式美化

在之前的一篇文章中,我已经介绍了input file上传按钮的美化,地址:http://www.haorooms.com/post/css_input_uploadmh ,今天,我们来讲一下checkbox美化和radio美化,关于select下拉框的美化的话,要用一个jquery插件了,这个插件后面我们再讲!急用的同学可以留言! 但是像checkbox美化和radio美化,input美化,根本就不用插件了。思路都一样的,先把之前的按钮透明度opacity设置为0,然后,外层用div包裹,就实现了美化功能。

效果图如下:

enter image description here

html代码如下:

<span class="pay_list_c1 on">
<input type="radio" checked="checked" name="paylist" value="1" class="radioclass">
</span>

css 代码:

.pay_list_c1 {
width: 24px;
height: 18px;
float: left;
padding-top: 3px;
cursor: pointer;
text-align: center;
margin-right: 10px;
background-image: url(images/inputradio.gif);
background-repeat: no-repeat;
background-position: -24px 0;
}
.radioclass {
opacity: 0;
cursor: pointer;
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";
filter: alpha(opacity=0);
}
.on {
background-position: 0 0;
}