如何获取json的key值值为\u5317\u4eac这种编码,怎么获取

通过ip地址获取当前地理位置
来源:博客园
使用接口的方式:
这种方式是相对稳定,而且提供的数据相对稳定,提供接口的地方很多,大家可以参照

不一一讲解,只讲解一下新浪提供的接口:
新浪接口地址:
参数有两个:format和ip
1)
IP:不传入ip值时默认为本机ip,也可以指定特定的ip地址;
2)
format:返回给客户端的数据格式有js和json格式:
a、
返回js格式:
eg:
返回结果:var remote_ip_info = {"ret":1,"start":"115.28.0.0","end":"115.29.255.255","country":"\u4e2d\u56fd","province":"\u5317\u4eac","city":"\u5317\u4eac","district":"","isp":"\u","type":"\u673a\u623f","desc":"\u4e2d\u56fd\u4e07\u7f51\u673a\u623f\u"};
返回的结果给一个js变量,变量值为json格式,可以自己将Unicode字符转码为中文:
var remote_ip_info = {"ret":1,"start":"115.28.0.0","end":"115.29.255.255","country":"中国","province":"北京","city":"北京","district":"","isp":"电信","type":"机房","desc":"中国万网机房电信"};
b、
返回json格式:
eg:
返回结果:
{"ret":1,"start":"115.28.0.0","end":"115.29.255.255","country":"\u4e2d\u56fd","province":"\u5317\u4eac","city":"\u5317\u4eac","district":"","isp":"\u","type":"\u673a\u623f","desc":"\u4e2d\u56fd\u4e07\u7f51\u673a\u623f\u"}
返回的结果直接是一个json格式的字符串,可以自己将Unicode字符转码为中文:
{"ret":1,"start":"115.28.0.0","end":"115.29.255.255","country":"中国","province":"北京","city":"北京","district":"","isp":"电信","type":"机房","desc":"中国万网机房电信"}
 代码示例:

&div&
&asp:GridView ID="gvDetail" runat="server" CellPadding="4" ForeColor="#333333" GridLines="None"
Width="100%" AutoGenerateColumns="false"&
&AlternatingRowStyle BackColor="White" /&
&EditRowStyle BackColor="#2461BF" /&
&FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" /&
&HeaderStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" /&
&PagerStyle BackColor="#2461BF" ForeColor="White" HorizontalAlign="Center" /&
&RowStyle BackColor="#EFF3FB" /&
&SelectedRowStyle BackColor="#D1DDF1" Font-Bold="True" ForeColor="#333333" /&
&SortedAscendingCellStyle BackColor="#F5F7FB" /&
&SortedAscendingHeaderStyle BackColor="#6D95E1" /&
&SortedDescendingCellStyle BackColor="#E9EBEF" /&
&SortedDescendingHeaderStyle BackColor="#4870BE" /&
&Columns&
&asp:TemplateField HeaderText="IP地址"&
&ItemTemplate&
&div style=" text-align:center"&&%#Eval("IP")%&&/div&
&/ItemTemplate&
&/asp:TemplateField&
&asp:TemplateField HeaderText="国家"&
&ItemTemplate&
&div style=" text-align:center"&&%#Eval("Country")%&&/div&
&/ItemTemplate&
&/asp:TemplateField&
&asp:TemplateField HeaderText="省会"&
&ItemTemplate&
&div style=" text-align:center"&&%#Eval("Province")%&&/div&
&/ItemTemplate&
&/asp:TemplateField&
&asp:TemplateField HeaderText="城市"&
&ItemTemplate&
&div style=" text-align:center"&&%#Eval("City")%&&/div&
&/ItemTemplate&
&/asp:TemplateField&
&asp:TemplateField HeaderText="地区"&
&ItemTemplate&
&div style=" text-align:center"&&%#Eval("District")%&&/div&
&/ItemTemplate&
&/asp:TemplateField& 
&asp:TemplateField HeaderText="运营商"&
&ItemTemplate&
&div style=" text-align:center"&&%#Eval("Isp")%&&/div&
&/ItemTemplate&
&/asp:TemplateField& 
&asp:TemplateField HeaderText="类型"&
&ItemTemplate&
&div style=" text-align:center"&&%#Eval("Type")%&&/div&
&/ItemTemplate&
&/asp:TemplateField& 
&asp:TemplateField HeaderText="描述"&
&ItemTemplate&
&div style=" text-align:center"&&%#Eval("Desc")%&&/div&
&/ItemTemplate&
&/asp:TemplateField& 
&/Columns&
&/asp:GridView&
&/div&

View Code

var ips = new List&string&();
ips.Add("101.36.93.107");
ips.Add("106.117.102.99");
ips.Add("111.206.170.45");
ips.Add("114.86.246.202");
ips.Add("116.55.250.58");
ips.Add("182.108.206.70");
ips.Add("36.250.249.232");
var list = new List&IPDetail&();
if (ips != null && ips.Count & 0)
foreach (var ip in ips)
var rs = 0;
NameValueCollection vc = new NameValueCollection();
vc.Add("format", "json");
vc.Add("ip", ip);
string result = WebUtils.PostDataToUrl(postUrl, Encoding.UTF8, vc);
result = ConvertUnicode2Chinese(result);
if (!Int32.TryParse(result, out rs))
JObject obj = (JObject)JsonConvert.DeserializeObject(result);
if (obj != null)
var ipd = new IPDetail();
ipd.IP =
ipd.Country = obj["country"].ToString();
ipd.Province = obj["province"].ToString();
ipd.City = obj["city"].ToString();
ipd.District = obj["district"].ToString();
ipd.Isp = obj["isp"].ToString();
ipd.Type = obj["type"].ToString();
ipd.Desc = obj["desc"].ToString();
list.Add(ipd);
}

gvDetail.DataSource =
gvDetail.DataBind();

View Code

/// &summary&
/// 将Unicode编码转换成中文
/// &/summary&
/// &param name="result"&&/param&
/// &returns&&/returns&
private string ConvertUnicode2Chinese(string result)
Regex reg = new Regex(@"(?i)\\[uU]([0-9a-f]{4})");
return reg.Replace(result, delegate(Match m)
{ return ((char)Convert.ToInt32(m.Groups[1].Value, 16)).ToString(); });
}

View Code

/// &summary&
/// POST数据到指定地址
/// &/summary&
/// &param name="url"&&/param&
/// &param name="encoding"&&/param&
/// &param name="data"&&/param&
/// &returns&&/returns&
public static string PostDataToUrl(string url, System.Text.Encoding encoding, System.Collections.Specialized.NameValueCollection data)
//设置HttpWebRequest
System.Net.HttpWebRequest request = (System.Net.HttpWebRequest)System.Net.HttpWebRequest.Create(new Uri(url));
request.UserAgent = "Mozilla/4.0 ( MSIE 7.0; Windows NT 5.2; .NET CLR 1.1.4322; .NET CLR 2.0.50727)";
request.ContentType = "application/x-www-form-urlencoded";
request.Method = "POST";
request.KeepAlive = false;

byte[]
using (System.IO.MemoryStream ms = new System.IO.MemoryStream())
for (int i = 0; i & data.C i++)
buffer = encoding.GetBytes(data.Keys[i]);
if (i & 0)
ms.WriteByte(Convert.ToByte('&'));
ms.Write(buffer, 0, buffer.Length);
ms.WriteByte(Convert.ToByte('='));
buffer = encoding.GetBytes(HttpUtility.UrlEncode(data[i]));
ms.Write(buffer, 0, buffer.Length);
buffer = ms.ToArray();
}

request.ContentLength = buffer.L
using (System.IO.Stream requestStream = request.GetRequestStream())
requestStream.Write(buffer, 0, buffer.Length);
requestStream.Close();
}

//获取数据
using (System.Net.HttpWebResponse response = (System.Net.HttpWebResponse)(request.GetResponse()))
using (System.IO.Stream stream = response.GetResponseStream())
using (System.IO.StreamReader reader = new System.IO.StreamReader(stream, encoding))
string result = reader.ReadToEnd();
reader.Close();
stream.Close();
response.Close();
return
finally
request.Abort();
}

View Code
运行效果:

2、
直接请求网页:
这种方式很不建议使用,从网页生扒html信息,很不稳定,一旦别人的网页模板或者样式一旦改变,自己的代码也要跟着改变,很头痛的,一般都不建议采用这种方式,能够找到接口的最好用别人提供的api,下面提供一个地址让有兴趣的人去研究一下:
免责声明:本站部分内容、图片、文字、视频等来自于互联网,仅供大家学习与交流。相关内容如涉嫌侵犯您的知识产权或其他合法权益,请向本站发送有效通知,我们会及时处理。反馈邮箱&&&&。
学生服务号
在线咨询,奖学金返现,名师点评,等你来互动求解答一个并列的json数据应该怎么处理
已经思考了2天了还是没结果
其实有两个问题先说第一个问题我是通过PDO 的fetchAll(PDO::FETCH_ASSOC)属性方法获取一个关联数组格式是一个二维数组通过print_r打印后获得Array ( [0] =& Array ( [id] =& 1 [name] =& kim1 [password] =& 我是中文字符 [date] =&
00:00:00 ) [1] =& Array ( [id] =& 2 [name] =& kim2 [password] =& 我是中文字符1
00:00:00 ) [2] =& Array ( [id] =& 3 [name] =& kim3 [password] =& 我是中文字符1 [date] =&
00:00:00 )问题是我使用json_encode()方法转换后转换后得到的是 这样一个并列数组的json格式[{"id":"1","name":"kim1","password":"\uf\u4e2d\u\u7b26","date":" 00:00:00"},{"id":"2","name":"kim2","password":"\uf\u4e2d\u\u7b26","date":" 00:00:00"},{"id":"3","name":"kim3","password":"\uf\u4e2d\u\u7b26","date":" 00:00:00"}]然而老师的php是通过设置的二维数组$members['1']['username'] = "幕课网";
$members['1']['password'] = "mukewang";
$members['2']['username'] = "袁明贺";
$members['2']['password'] = "haha";
$members['2']['address'] = "北京市朝阳区";
$members['3']['members']['username']="我是第三个用户名";我使用同样的方法 通过print_r打印后获得的是也是和我一样的数组格式Array ( [1] =& Array ( [username] =& 幕课网 [password] =& mukewang ) [2] =& Array ( [username] =& 袁明贺 [password] =& haha [address] =& 北京市朝阳区 [members] =& Array ( [username] =& 我是第三个用户名 ) ) )那么问题来了 同样我通过我使用json_encode()方法转换后 的结果和得出的结果截然不同是什么问题
老师的得出的结果是: {"1":{"username":"\u5e55\u8bfe\u7f51","password":"mukewang"},"2":{"username":"\ue\u8d3a","password":"haha","address":"\u5317\u4eac\u5e02\u671d\ua","members":{"username":"\uf\u7b2c\u4e09\u4e2a\u\u540d"}}}我想问的第一个问题是 为什么会这样 一样的数组格式 转换JSON后得的结果为什么截然不同下面是第二问问题当得到老师的这种json格式我可以通过"$().data[1].name: 获取值 "幕课网" 那么这种[{},{}]并列数组的格式 要怎么才能获取里面的name对应的"kim1"的值
写下你的评论...
写下你的评论...
Copyright (C)
All Rights Reserved | 京ICP备 号-2/ media_imolee
项目语言:None
权限:read-only(如需更高权限请先加入项目)
media_imolee/
Index: fileUploader.js
===================================================================
--- fileUploader.js (revision 0)
+++ fileUploader.js (revision 2)
@@ -0,0 +1,1108 @@
+define(['bootstrap', 'webuploader', 'util', 'filestyle'], function($, WebUploader, util){
+ 'options' : {
: '',
设置上传类型 image/audio
返回结果为 object | array
是否单击即选中文件
dest_dir : '',
重置上传目录,
定位到 global 目录
'upload'
: 'active', 上传文件
'crawler'
: '',
提取网络文件
'browser'
: '',
'remoteImage' : '',
上传到微信
'remoteAudio' : '',
上传到微信
+ fileUploader = {
'supports' : ['upload', 'crawler', 'browser', 'remoteAudio', 'remoteImage'],
'defaultoptions' : {
debug : false,
global : false,
callback : null, // 回调方法
type : 'image', // 上传组件类型
direct : false, // 效果, 是否选择即返回, 单图可用.
multi : false, // 返回结果是 object 还是 Array
dest_dir : '', // 自定义上传目录
tabs : { // 选项卡, remote
'upload': 'active',
'browser' : '',
'crawler' : ''
'options' : {}, // 当前配置项
'show' : function(callback, options){
this.init(callback, options);
'reset' : function(){
if(this.modalobj != null){
this.images = [];
for(i in this.options.tabs){
eval(&$this.reset_&+i+&();&);
'hide' : function(){
if(this.modalobj != null){
this.reset();
this.modalobj.modal('hide');
'uploader' : {},
'modalobj' : null,
'images' : [],
/*上次上次控件的状态,tabname,active*/
'historyOptions' : '',
'test' : function(msg){
if(!$this.options.debug){
console.log('fileupload-&debug-------start------')
console.log('【选项卡】: ' + msg);
console.log('【options】: ');
console.log($this.options);
console.log('【result】: ');
if($this.options.multi){
console.log($this.images);
console.log($this.images[0]);
console.log('【callback】: ');
console.dir($this.options.callback);
console.log('fileupload-&debug-------end------')
'init' : function(callback, options) {
this.options = $.extend({}, this.defaultoptions, options);
this.options.callback =
if(options.tabs){
this.options.tabs = {};
if(typeof(options.tabs.remote) != 'undefined'){
if(this.options.type == 'image'){
options.tabs['remoteImage'] = options.tabs.
options.tabs['remoteAudio'] = options.tabs.
delete options.tabs.
for(i in options.tabs){
if($.inArray(i, $this.supports) & -1){
$this.options.tabs[i] = options.tabs[i];
if(this.options.global){
this.options.global = 'global';
this.options.global = '';
document.cookie = &__fileupload_type=&+ escape (this.options.type);
document.cookie = &__fileupload_dest_dir=&+ escape (this.options.dest_dir);
document.cookie = &__fileupload_global=&+ escape (this.options.global);
if ($('#modal-fileUploader').length == 0) {
$(document.body).append('&div id=&modal-fileUploader& class=&modal fade& tabindex=&-1& role=&dialog& aria-hidden=&true&&&/div&');
this.modalobj = $('#modal-fileUploader');
this.modalobj.append(
'&div class=&modal-dialog& style=&width: 710&&\n'+
' &div class=&modal-content&&\n'+
&div class=&modal-header& style=&padding: 5&&'+
&button type=&button& class=&close& data-dismiss=&modal& aria-hidden=&true&&×&/button&'+
&ul class=&nav nav-pills& role=&tablist&&'+
&/ul&'+
&/div&'+
&div class=&modal-body tab-content&&&/div&\n' +
' &/div&\n' +
'&/div&\n'
this.modalobj = $('#modal-fileUploader');
var currentOptions = '';
for(i in this.options.tabs){
eval(&this.init_&+i+&();&);
currentOptions += i + $this.options.tabs[i];
if(!this.historyOptions || this.historyOptions != currentOptions){
$this.modalobj.find('.nav-pills').find('li').removeClass('active').hide();
$this.modalobj.find('.tab-pane').removeClass('active');
for(i in $this.options.tabs){
$this.modalobj.find('.nav-pills').find('a[aria-controls=&'+i+'&]').parent().show();
if($this.options.tabs[i]){
$this.modalobj.find('.nav-pills').find('a[aria-controls=&'+i+'&]').parent().addClass('active');
$this.modalobj.find('#'+i).addClass('active');
if($this.options.path){
this.browser(this.options.path);
this.browser(this.options.type+'s');
$($this.modalobj.find('.nav-pills').find('li.active').find('a').attr('href')).addClass('active');
this.reset();
this.historyOptions = currentO
this.modalobj.modal({'keyboard': false});
this.modalobj.modal('show');
var eduizindex = $('#edui1').css('z-index');
this.modalobj.css('z-index', parseInt(eduizindex) + 100);
'init_crawler' : function() {
if(this.modalobj.find('#crawler').length == 0){
this.modalobj.find('.nav-pills').append('&li role=&presentation&&&a aria-controls=&crawler& role=&tab& data-toggle=&tab& href=&#crawler&&提取网络文件&/a&&/li&');
this.modalobj.find('.modal-body').append(this.template().crawler);
this.modalobj.find('#btnFetch').off('click');
this.modalobj.find('#btnFetch').click(function(){
var url = $('#crawlerUrl').val();
if (url.length == 0){
alert('请输入网络文件地址.');
if (url.length & 0){
$.post('./index.php?c=utility&a=file&do=fetch', {'url':url}, function(data){
var result = $.parseJSON(data);
if(result.message){
alert(result.message);
$this.images = [];
$this.images.push(result);
if ($this.options.direct == true){
$this.modalobj.find('.crawler').find('button.btn-primary').click();
if($this.options.type == 'image'){
$this.modalobj.find('.crawler').find('.crawler-img-sizeinfo').text(result.width+'x'+result.height);
$this.modalobj.find('.crawler').find('.crawler-img-sizeinfo').text(result.size);
$this.modalobj.find('.crawler').find('.crawler-img').css(&background-image&,&url(&+result.url+&)&);
this.modalobj.find('#crawler').find('button.btn-primary').off('click');
this.modalobj.find('#crawler').find('button.btn-primary').on('click', function(){
if ($this.images.length & 0){
if($.isFunction($this.options.callback)){
if($this.options.multi){
$this.options.callback($this.images);
$this.options.callback($this.images[0]);
$this.hide();
alert('未选择任何文件.');
'reset_crawler' : function(){
$('#crawlerUrl').val('');
this.modalobj.find('#crawler').find('.crawler-img-sizeinfo').text('');
this.modalobj.find('#crawler').find('.crawler-img').css(&background-image&,&url('./resource/images/nopic.jpg')&);
'init_remoteImage' : function() {
if(this.modalobj.find('#remoteImage').length == 0){
this.modalobj.find('.nav-pills').append('&li role=&presentation&&&a aria-controls=&remoteImage& role=&tab& data-toggle=&tab& href=&#remoteImage&&上传到微信&/a&&/li&');
this.modalobj.find('.modal-body').append(this.template().remoteImage);
this.modalobj.find('#remoteImage').find(':file[name=&file&]').filestyle({buttonText: '选择文件'});
this.modalobj.find('#remoteImage').find('button.btn-primary').off('click');
this.modalobj.find('#remoteImage').find('button.btn-primary').on('click', function(){
util.loading();
$('#fileUploader_remote_image_form').submit();
var interval = setInterval(function(){
var content = $('#fileUploader_remote_image_target').get(0).contentWindow.document.body.innerT
if(content != ''){
clearInterval(interval);
var result = $.parseJSON(content);
if(result.message){
alert(result.message);
} else if(result.media_id) {
$this.test('remote-image');
if ($.isFunction($this.options.callback)){
if($this.options.multi){
$this.options.callback([result]);
$this.options.callback(result);
util.loaded();
$this.hide();
console.log('上传文件错误信息:');
console.log(result);
'reset_remoteImage' : function(){
'init_remoteAudio' : function() {
if(this.modalobj.find('#remoteAudio').length == 0){
this.modalobj.find('.nav-pills').append('&li role=&presentation&&&a aria-controls=&remoteAudio& role=&tab& data-toggle=&tab& href=&#remoteAudio&&上传到微信&/a&&/li&');
this.modalobj.find('.modal-body').append(this.template().remoteAudio);
this.modalobj.find('#remoteAudio').find(':file[name=&file&]').filestyle({buttonText: '选择文件'});
this.modalobj.find('#remoteAudio').find('button.btn-primary').off('click');
this.modalobj.find('#remoteAudio').find('button.btn-primary').on('click', function(){
util.loading();
$('#fileUploader_remote_audio_form').submit();
var interval = setInterval(function(){
var $target = $('#fileUploader_remote_audio_target').get(0).contentWindow.document.body.innerT
if($target != ''){
clearInterval(interval);
var result = $.parseJSON($target);
if(result.message){
alert(result.message);
} else if(result.media_id) {
$this.test('remote-audio');
if ($.isFunction($this.options.callback)){
if($this.options.multi){
$this.options.callback([result]);
$this.options.callback(result);
util.loaded();
$this.hide();
console.log(result);
'reset_remoteAudio' : function(){
'init_browser' : function() {
if(this.modalobj.find('#browser').length == 0){
this.modalobj.find('.nav-pills').append('&li role=&presentation&&&a aria-controls=&browser& role=&tab& data-toggle=&tab& href=&#browser&&浏览附件&/a&&/li&');
this.modalobj.find('.modal-body').append(this.template().browser);
this.browser(this.type+'s');
this.modalobj.find('#browser').find('button.btn-primary').off('click');
this.modalobj.find('#browser').find('button.btn-primary').on('click', function(){
if ($this.images.length & 0){
$this.test('browser');
if($.isFunction($this.options.callback)){
if($this.options.multi){
$this.options.callback($this.images);
$this.options.callback($this.images[0]);
$this.hide();
alert('未选择任何文件.');
'reset_browser' : function(){
this.modalobj.find('#browser').find('.img-item-selected').removeClass('img-item-selected');
this.modalobj.find('#browser').find('.browser-info').text('');
'browserfiles' : {},
'browser' : function(path) {
var $browser = $this.modalobj.find('#browser');
$browser.find('.browser').html('&i class=&fa fa-spinner fa-pulse&&&/i&');
//初始化数据
$.getJSON('./index.php?c=utility&a=file&do=browser', {'type':$this.type,'path': path}, function(data){
if (data['message']){
alert(data.message);
$this.browserfiles = {};
var crumbs = data.
var html = '';
for(i in crumbs){
html += '&li&&a herf=&javascript:;& class=&browser-item& attachment=&'+crumbs[i].attachment+'&&'+crumbs[i].filename+'&/a&&/li&';
$browser.find('.breadcrumb').empty();
$browser.find('.breadcrumb').append(html);
$browser.find('.breadcrumb').find('li').eq(0).find('a').html('&i class=&fa fa-home&&&&/i&');
html = '';
var parent = data.
if(parent != null){
'&div title=&上一级& attachment=&'+parent.attachment+'& title=&'+parent.filename+'& class=&thumbnail browser-item&&'+
' &i class=&fa fa-mail-reply& style=&font-size:45 padding:10&&&/i&'+
'&/div&';
var deletehtml = '';
if(data.candelete === true){
deletehtml = ' &div class=&btnClose&&&a href=&javascript:;&&&i class=&fa fa-times&&&/i&&/a&&/div&'
var files = data.
for(i in files){
var file = files[i];
if(file.is_dir){
'&div title=&'+file.filename+'& attachment=&'+file.attachment+'& class=&thumbnail browser-item&&'+
' &i class=&fa fa-folder&&&/i&'+
' &span class=&text-center&&'+file.filename+'&/span&'+
'&/div&';
file['id'] =
$this.browserfiles['file_'+i] =
if($this.options.type == 'image'){
'&div class=&img-item& title=&'+file.filename+'& attachid=&'+file.id+'& attachment=&'+file.attachment+'&&'+
deletehtml +
' &div class=&img-container& style=&background-image: url(\''+file.url+'\');&&'+
&div class=&img-meta&&'+file.width+'*'+file.height+'&/div&'+
&div class=&select-status&&&span&&/span&&/div&'+
' &/div&'+
'&/div&';
'&div class=&img-item& title=&'+file.filename+'& attachid=&'+file.id+'& attachment=&'+file.attachment+'&&'+
' &div class=&btnClose&&&a href=&javascript:;&&&i class=&fa fa-times&&&/i&&/a&&/div&'+
' &div class=&img-container& style=&background-image: url(\'./resource/images/media.jpg\');&&'+
&div class=&img-meta&&'+file.size+'&/div&'+
&div class=&select-status&&&span&&/span&&/div&'+
' &/div&'+
'&/div&';
$browser.find('.file-browser').empty();
$browser.find('.file-browser').append(html);
// 绑定事件
$browser.find('.browser-item').off('click');
$browser.find('.browser-item').on('click', function(){
$this.browser($(this).attr('attachment'));
$browser.find('.btnClose').off('click');
$browser.find('.btnClose').on('click', function(event){
var $this =
if (confirm(&确定要删除文件吗?&)){
var attachment = $(this).parent().attr('attachment');
$.post('./index.php?c=utility&a=file&do=delete', {'file' : attachment}, function(data){
$($this).parent().remove();
event.stopPropagation();
$browser.find('.img-item').off('click');
$browser.find('.img-item').on('click', function(){
$(this).toggleClass('img-item-selected');
$this.images = [];
$.each($('.img-item-selected'), function(idx, ele){
$this.images.push($this.browserfiles['file_'+$(ele).attr('attachid')]);
$browser.find('.browser-info').text('已选中 '+$this.images.length+' 个文件.');
if(($this.options.direct || !$this.options.multi) && $(this).hasClass('img-item-selected')){
$browser.find('button.btn-primary').click();
'init_upload' : function(){
if(this.modalobj.find('.nav-pills').html().indexOf('上传文件') == -1){
this.modalobj.find('.nav-pills').append('&li role=&presentation&&&a aria-controls=&upload& role=&tab& data-toggle=&tab& href=&#upload& &上传文件&/a&&/li&');
this.modalobj.find('#upload').remove();
if(this.modalobj.find('#upload').length == 0){
this.modalobj.find('.modal-body').append(this.template().upload);
var $wrap = $('#uploader'),
// 图片容器
$queue = $('&ul class=&filelist&&&/ul&').appendTo($wrap.find('.queueList')),
// 状态栏,包括进度和控制按钮
$statusBar = $wrap.find('.statusBar'),
// 文件总体选择信息。
$info = $statusBar.find('.info'),
// 上传按钮
$upload = $wrap.find('.uploadBtn'),
// 没选择文件之前的内容。
$placeHolder = $wrap.find('.placeholder'),
$progress = $statusBar.find('.progress').hide(),
// 添加的文件数量
fileCount = 0,
// 添加的文件总大小
fileSize = 0,
// 优化retina, 在retina下这个值是2
ratio = window.devicePixelRatio || 1,
// 缩略图大小
thumbnailWidth = 110 * ratio,
thumbnailHeight = 110 * ratio,
// 可能有pedding, ready, uploading, confirm, done.
state = 'pedding',
// 所有文件的进度信息,key为file id
percentages = {},
supportTransition = (function(){
var s = document.createElement('p').style,
r = 'transition' in s ||
'WebkitTransition' in s ||
'MozTransition' in s ||
'msTransition' in s ||
'OTransition'
var options = {
//auto: !$this.options.multi,
id: '#filePicker',
label: '点击选择文件',
multiple : $this.options.multi
dnd: '#dndArea',
paste: '#uploader',
// swf文件路径
swf: './resource/componets/webuploader/Uploader.swf',
// 文件接收服务端。
server: './index.php?c=utility&a=file&do=upload',
chunked: false,
compress: false,
formData : {
uploadtype : escape (this.options.type),
dest_dir : escape (this.options.dest_dir),
global : escape (this.options.global),
thumb : escape (this.options.thumb),
width : escape (this.options.width)
duplicate : true,
fileNumLimit: $this.options.multi ? 30 : 1,
fileSizeLimit: 4 * 1024 * 1024,
fileSingleSizeLimit: 30* 4 * 1024 * 1024
uploader = WebUploader.create(options);
if($this.options.multi){
// 添加“添加文件”的按钮,
uploader.addButton({
id: '#filePicker2',
label: '继续添加',
multiple : $this.options.multi
$this.uploader =
// 成功上传
accept = 0;
$this.reset_upload = function(){
fileCount = 0;
fileSize = 0;
accept = 0;
$.each($this.uploader.getFiles(), function(index, file){
removeFile(file);
updateTotalProgress();
$this.uploader.reset();
$this.uploader.refresh();
$('#dndArea').removeClass('element-invisible');
$('#uploader').find('.filelist').empty();
if($this.options.multi){
$('#filePicker2').removeClass('element-invisible');
$('#filePicker2').next().removeClass('disabled');
$('#filePicker2').find('.webuploader-pick').next().css({'top': '0px', 'left': '0px','width': '100px','height': '32px'});
$('#filePicker').find('.webuploader-pick').next().css({'left':'242px', 'top':'35px'});
var bar = $('#uploader').find('.statusBar');
bar.find('.info').empty();
bar.find('.accept').empty();
bar.show();
// 当有文件添加进来时执行,负责view的创建
function addFile(file) {
var $li = $('&li id=&' + file.id + '&&' +
'&p class=&title&&' + file.name + '&/p&' +
'&p class=&imgWrap&&&/p&'+
//'&p class=&progress&&&span&&/span&&/p&' +
'&/li&'),
$btns = $('&div class=&file-panel&&' +
'&span class=&cancel&&删除&/span&&/div&').appendTo($li),
$prgress = $li.find('p.progress span'),
$wrap = $li.find('p.imgWrap'),
$info = $('&p class=&error&&&/p&'),
showError = function(code) {
switch(code) {
case 'exceed_size':
text = '文件大小超出';
case 'interrupt':
text = '上传暂停';
text = '上传失败,请重试';
$info.text(text).appendTo($li);
if (file.getStatus() === 'invalid') {
showError(file.statusText);
// @todo lazyload
$wrap.text('预览中');
uploader.makeThumb(file, function(error, src) {
if (error) {
$wrap.text('不能预览');
var img = $('&img src=&'+src+'&&');
$wrap.empty().append(img);
}, thumbnailWidth, thumbnailHeight);
percentages[file.id] = [file.size, 0];
file.rotation = 0;
file.on('statuschange', function(cur, prev) {
if (prev === 'progress') {
$prgress.hide().width(0);
} else if (prev === 'queued') {
$li.off('mouseenter mouseleave');
$btns.remove();
if (cur === 'error' || cur === 'invalid') {
showError(file.statusText);
percentages[file.id][1] = 1;
} else if (cur === 'interrupt') {
showError('interrupt');
} else if (cur === 'queued') {
percentages[file.id][1] = 0;
} else if (cur === 'progress') {
$info.remove();
$prgress.css('display', 'block');
} else if (cur === 'complete') {
//$li.append('&span class=&success&&&/span&');
$li.removeClass('state-' + prev).addClass('state-' + cur);
$li.on('mouseenter', function() {
$btns.stop().animate({height: 30});
$li.on('mouseleave', function() {
$btns.stop().animate({height: 0});
$btns.on('click', 'span', function() {
var index = $(this).index(),
switch (index) {
uploader.removeFile(file);
file.rotation += 90;
file.rotation -= 90;
if (supportTransition) {
deg = 'rotate(' + file.rotation + 'deg)';
$wrap.css({
'-webkit-transform': deg,
'-mos-transform': deg,
'-o-transform': deg,
'transform': deg
$wrap.css('filter', 'progid:DXImageTransform.Microsoft.BasicImage(rotation='+ (~~((file.rotation/90)%4 + 4)%4) +')');
$li.appendTo($queue);
// 负责view的销毁
function removeFile(file) {
var $li = $('#'+file.id);
delete percentages[file.id];
updateTotalProgress();
$li.off().find('.file-panel').off().end().remove();
function updateTotalProgress() {
var loaded = 0,
total = 0,
spans = $progress.children(),
$.each(percentages, function(k, v) {
total += v[0];
loaded += v[0] * v[1];
percent = total ? loaded / total : 0;
spans.eq(0).text(Math.round(percent * 100) + '%');
spans.eq(1).css('width', Math.round(percent * 100) + '%');
updateStatus();
function updateStatus() {
var text = '',
if (state === 'ready') {
text = '选中' + fileCount + '个文件,共' + WebUploader.formatSize(fileSize) + '。';
} else if (state === 'confirm') {
stats = uploader.getStats();
if (stats.uploadFailNum) {
text = '已上传'+stats.successNum+'个文件,'+stats.uploadFailNum+'个文件上传失败,&a class=&retry& href=&#&&重新上传&/a&失败文件或&a class=&ignore& href=&#&&忽略&/a&'
stats = uploader.getStats();
text = '共'+fileCount+'个('+WebUploader.formatSize(fileSize)+'),已上传' + stats.successNum + '个';
if (stats.uploadFailNum) {
text += ',失败' + stats.uploadFailNum + '个';
$info.html(text);
function setState(val) {
if (val === state) {
$upload.removeClass('state-' + state);
$upload.addClass('state-' + val);
switch (state) {
case 'pedding':
$placeHolder.removeClass('element-invisible');
$queue.hide();
$statusBar.addClass('element-invisible');
uploader.refresh();
case 'ready':
$placeHolder.addClass('element-invisible');
$('#filePicker2').removeClass('element-invisible');
$queue.show();
$statusBar.removeClass('element-invisible');
uploader.refresh();
case 'uploading':
$('#filePicker2').addClass('element-invisible');
$progress.show();
$upload.text('暂停上传');
case 'paused':
$progress.show();
$upload.text('继续上传');
case 'confirm':
$progress.hide();
$upload.text('确认使用').addClass('disabled');
stats = uploader.getStats();
if (stats.successNum && !stats.uploadFailNum) {
setState('finish');
case 'finish':
$( '#filePicker2' ).removeClass( 'element-invisible' );
$upload.text( '确认使用' ).removeClass( 'disabled' );
stats = uploader.getStats();
if (stats.successNum) {
// alert('上传成功');
// 没有成功的文件,重设
state = 'done';
location.reload();
updateStatus();
uploader.onUploadProgress = function(file, percentage) {
var $li = $('#'+file.id),
$percent = $li.find('.progress span');
$percent.css('width', percentage * 100 + '%');
percentages[file.id][1] =
fileid = file.
updateTotalProgress();
uploader.onFileQueued = function(file) {
fileCount++;
fileSize += file.
if (fileCount === 1) {
$placeHolder.addClass('element-invisible');
$statusBar.show();
addFile(file);
setState('ready');
updateTotalProgress();
uploader.onFileDequeued = function(file) {
fileCount--;
fileSize -= file.
if (!fileCount) {
setState('pedding');
removeFile(file);
updateTotalProgress();
$('#filePicker2').removeClass('element-invisible');
$('#filePicker2').next().removeClass('disabled');
uploader.on('all', function(type) {
switch(type) {
case 'uploadFinished':
setState('confirm');
case 'startUpload':
setState('uploading');
case 'stopUpload':
setState('paused');
uploader.on('uploadSuccess', function(file, result) {
if (result == 'Access Denied'){
console.log(result);
if (result.message){
alert(result.message);
if (!result.message){
$this.images.push(result);
if(result.width){
$('#'+file.id).append('&span class=&success& style=&line-height: 50&&'+result.width +'x'+ result.height +'&/span&');
} else if(result.size) {
$('#'+file.id).append('&span class=&success& style=&line-height: 50&&'+result.size+'&/span&');
$('.accept').text('成功上传 '+accept+' 个文件');
if(!$this.options.multi){
$this.modalobj.find('#upload').find('.btn.btn-primary').click();
uploader.on('uploadFinished', function() {
if($this.images.length & 0){
$this.modalobj.find('#upload').find('.btn.btn-primary').click();
uploader.onError = function(code) {
if(code == 'Q_EXCEED_SIZE_LIMIT'){
alert('错误信息: 文件大于 1M 无法上传.');
if(code == 'F_DUPLICATE'){
alert('错误信息: 不能重复上传文件.');
alert('Eroor: ' + code);
$upload.on('click', function() {
if ($(this).hasClass('disabled')) {
if (state === 'ready') {
uploader.upload();
} else if (state === 'paused') {
uploader.upload();
} else if (state === 'uploading') {
uploader.stop();
$info.on('click', '.retry', function() {
uploader.retry();
$info.on('click', '.ignore', function() {
// alert('todo');
$upload.addClass('state-' + state);
updateTotalProgress();
this.modalobj.find('#upload').find('button.reset').off('click');
this.modalobj.find('#upload').find('button.reset').on('click', function(){
$this.reset_upload();
this.modalobj.find('#upload').find('button.btn-primary').off('click');
this.modalobj.find('#upload').find('button.btn-primary').on('click', function(){
$this.test('upload');
if ($this.images.length & 0){
if($.isFunction($this.options.callback)){
if($this.options.multi){
$this.options.callback($this.images);
$this.options.callback($this.images[0]);
$this.hide();
alert('未选择任何文件.');
'reset_upload' : function(){
'template' : function() {
var template = {};
template['upload'] =
'&div role=&tabpanel& class=&tab-pane upload& id=&upload&&'+
' &div id=&uploader& class=&uploader&&'+
&div class=&queueList&&'+
&div id=&dndArea& class=&placeholder&&'+
&div id=&filePicker&&&/div&'+
&p&或将文件拖到这里,单次最多可选 ' + ($this.options.multi ? 30 : 1) + '个文件&/p&'+
&/div&'+
&/div&'+
&div class=&statusBar& style=&line-height: 30 margin-bottom: -15&&'+
&div class=&progress&&'+
&span class=&text&&0%&/span&'+
&span class=&percentage&&&/span&'+
&/div&'+
&div class=&info&&&/div&'+
&div class=&accept&&&/div&'+
&div class=&btns&&'+
( $this.options.multi ? '
&div id=&filePicker2& class=&btn btn-primary& style=&margin-top: 4 color:&&&/div&' : '' )+
&div class=&uploadBtn btn btn-primary& style=&margin-top: 4&&确认使用&/div&'+
&div class=&modal-button-upload& style=&float: margin-left: 5 margin-right: -20 display:&&'+
&button type=&button& class=&btn btn-default reset&&清空&/button&'+
&button type=&button& class=&btn btn-default& data-dismiss=&modal&&取消&/button&'+
&button type=&button& class=&btn btn-primary&&确认&/button&'+
&/div&'+
&/div&'+
&/div&'+
' &/div&'+
'&/div&';
template['crawler'] =
'&div role=&tabpanel& class=&tab-pane crawler& id=&crawler&&'+
' &div style=&margin-top: 10&&'+
&form&'+
&div class=&form-group&&'+
&div class=&input-group&&'+
&input type=&url& class=&form-control& id=&crawlerUrl& placeholder=&请输入网络文件地址&&'+
&input type=&hidden& value=&& &'+
&span class=&input-group-btn&&'+
&button class=&btn btn-default& type=&button& id=&btnFetch&&提取&/button&'+
&/span&'+
&/div&'+
&div class=&crawler-img& style=&background-image:url(\'./resource/images/nopic.jpg\')&&'+
&span class=&crawler-img-sizeinfo&&&/span&'+
&/div&'+
&/div&'+
&/form&'+
' &/div&'+
' &div class=&modal-footer& style=&padding: 12px 0px 0&&'+
&button type=&button& class=&btn btn-default& data-dismiss=&modal&&取消&/button&'+
&button type=&button& class=&btn btn-primary&&确认&/button&'+
' &/div&'+
'&/div&';;
template['browser'] =
'&div role=&tabpanel& class=&tab-pane browser& id=&browser&&'+
' &ol class=&breadcrumb& style=&padding: 8 background: #FFFFFF; margin-top: -10 margin-bottom: 0&&'+
' &/ol&'+
' &div class=&clearfix file-browser&&'+
' &/div&'+
' &div class=&modal-footer& style=&padding: 12px 0px 0&&'+
&div style=&float:&&'+
&span class=&browser-info&&&span&'+
&/div&'+
&div style=&float:&&'+
&button type=&button& class=&btn btn-default& data-dismiss=&modal&&取消&/button&'+
&button type=&button& class=&btn btn-primary&&确认&/button&'+
&/div&'+
' &/div&'+
'&/div&';
template['remoteImage'] =
'&div role=&tabpanel& class=&tab-pane remoteImage& id=&remoteImage&&'+
' &div class=&row&&'+
&iframe width=&0& height=&0& id=&fileUploader_remote_image_target& name=&fileUploader_remote_image_target& style=&display:&&&/iframe&' +
&form class=&form-horizontal& name=&fileUploader_remote_image_form& id=&fileUploader_remote_image_form& action=&./index.php?c=utility&a=file&do=upload&type=image& enctype=&multipart/form-data& method=&post& target=&fileUploader_remote_image_target&&'+
&div class=&form-group&&' +
&label class=&col-xs-12 col-sm-2 control-label&&上传图片&/label&' +
&div class=&col-sm-10&&' +
&input type=&file& name=&file&&'+
&/div&' +
&/div&' +
&div class=&form-group&&' +
&label class=&col-xs-12 col-sm-2 control-label&&资源类型&/label&' +
&div class=&col-sm-10&&' +
&label class=&radio-inline&&' +
&input type=&radio& name=&mediatype& value=&image& checked=&checked&&图片(小于1M)'+
&/label&'+
&label class=&radio-inline&&'+
&input type=&radio& name=&mediatype& value=&thumb&&缩略图(小于64K)'+
&/label&' +
&/div&' +
&/div&' +
&div class=&form-group&&' +
&div class=&col-sm-10 col-sm-offset-2&&' +
&div class=&alert alert-warning& role=&alert&&注 : 上传图片类型仅限 JPG&/div&' +
&/div&' +
&/div&' +
&/form&' +
' &/div&'+
' &div class=&modal-footer& style=&padding: 12px 0px 0&&'+
&div style=&float:&&'+
&span class=&browser-info&&&span&'+
&/div&'+
&div style=&float:&&'+
&button type=&button& class=&btn btn-default& data-dismiss=&modal&&取消&/button&'+
&button type=&button& class=&btn btn-primary&&确认&/button&'+
&/div&'+
' &/div&'+
'&/div&';
template['remoteAudio'] =
'&div role=&tabpanel& class=&tab-pane remoteAudio& id=&remoteAudio&&'+
' &div class=&row&&'+
&iframe width=&0& height=&0& id=&fileUploader_remote_audio_target& name=&fileUploader_remote_audio_target& style=&display:&&&/iframe&' +
&form class=&form-horizontal& id=&fileUploader_remote_audio_form& name=&fileUploader_remote_audio_form& action=&./index.php?c=utility&a=file&do=upload&type=audio& enctype=&multipart/form-data& method=&post& target=&fileUploader_remote_audio_target&&'+
&div class=&form-group&&' +
&label class=&col-xs-12 col-sm-2 control-label&&上传文件&/label&' +
&div class=&col-sm-10&&' +
&input type=&file& name=&file&&'+
&input type=&hidden& name=&mediatype& value=&video&&'+
&/div&' +
&/div&' +
&div class=&form-group&&' +
&div class=&col-sm-10 col-sm-offset-2&&' +
&div class=&alert alert-warning& role=&alert&&注 : 上传媒体类型仅限 mp3/amr (小于 2M)、 mp4(小于 10M).&/div&' +
&/div&' +
&/div&' +
&/form&' +
' &/div&'+
' &div class=&modal-footer& style=&padding: 12px 0px 0&&'+
&div style=&float:&&'+
&span class=&browser-info&&&span&'+
&/div&'+
&div style=&float:&&'+
&button type=&button& class=&btn btn-default& data-dismiss=&modal&&取消&/button&'+
&button type=&button& class=&btn btn-primary&&确认&/button&'+
&/div&'+
' &/div&'+
'&/div&';
+ return fileU
\ No newline at end of file
Index: util.js
===================================================================
--- util.js (revision 0)
+++ util.js (revision 2)
@@ -0,0 +1,669 @@
+(function(window) {
+ var util = {};
+ util.tomedia = function(src){
if(src.indexOf('http://') == 0 || src.indexOf('https://') == 0 || src.indexOf('./resource') == 0) {
} else if(src.indexOf('./addons') == 0) {
var url=window.document.location.
var pathName = window.document.location.
var pos = url.indexOf(pathName);
var host = url.substring(0,pos);
if (src.substr(0,1)=='.') {
src=src.substr(1);
return host +
return '../attachment/' +
+ util.clip = function(elm, str) {
if(elm.clip) {
require(['jquery.zclip'], function(){
$(elm).zclip({
path: './resource/components/zclip/ZeroClipboard.swf',
copy: str,
afterCopy: function(){
var obj = $('&em& & &span class=&label label-success&&&i class=&fa fa-check-circle&&&/i& 复制成功&/span&&/em&');
var enext = $(elm).next().html();
if (!enext || enext.indexOf('& &span class=&label label-success&&&i class=&fa fa-check-circle&&&/i& 复制成功&/span&')&0) {
$(elm).after(obj);
setTimeout(function(){
obj.remove();
elm.clip =
+ util.colorpicker = function(elm, callback) {
require(['colorpicker'], function(){
$(elm).spectrum({
className : &colorpicker&,
showInput: true,
showInitial: true,
showPalette: true,
maxPaletteSize: 10,
preferredFormat: &hex&,
change: function(color) {
if($.isFunction(callback)) {
callback(color);
palette: [
[&rgb(0, 0, 0)&, &rgb(67, 67, 67)&, &rgb(102, 102, 102)&, &rgb(153, 153, 153)&,&rgb(183, 183, 183)&,
&rgb(204, 204, 204)&, &rgb(217, 217, 217)&,&rgb(239, 239, 239)&, &rgb(243, 243, 243)&, &rgb(255, 255, 255)&],
[&rgb(152, 0, 0)&, &rgb(255, 0, 0)&, &rgb(255, 153, 0)&, &rgb(255, 255, 0)&, &rgb(0, 255, 0)&,
&rgb(0, 255, 255)&, &rgb(74, 134, 232)&, &rgb(0, 0, 255)&, &rgb(153, 0, 255)&, &rgb(255, 0, 255)&],
[&rgb(230, 184, 175)&, &rgb(244, 204, 204)&, &rgb(252, 229, 205)&, &rgb(255, 242, 204)&, &rgb(217, 234, 211)&,
&rgb(208, 224, 227)&, &rgb(201, 218, 248)&, &rgb(207, 226, 243)&, &rgb(217, 210, 233)&, &rgb(234, 209, 220)&,
&rgb(221, 126, 107)&, &rgb(234, 153, 153)&, &rgb(249, 203, 156)&, &rgb(255, 229, 153)&, &rgb(182, 215, 168)&,
&rgb(162, 196, 201)&, &rgb(164, 194, 244)&, &rgb(159, 197, 232)&, &rgb(180, 167, 214)&, &rgb(213, 166, 189)&,
&rgb(204, 65, 37)&, &rgb(224, 102, 102)&, &rgb(246, 178, 107)&, &rgb(255, 217, 102)&, &rgb(147, 196, 125)&,
&rgb(118, 165, 175)&, &rgb(109, 158, 235)&, &rgb(111, 168, 220)&, &rgb(142, 124, 195)&, &rgb(194, 123, 160)&,
&rgb(166, 28, 0)&, &rgb(204, 0, 0)&, &rgb(230, 145, 56)&, &rgb(241, 194, 50)&, &rgb(106, 168, 79)&,
&rgb(69, 129, 142)&, &rgb(60, 120, 216)&, &rgb(61, 133, 198)&, &rgb(103, 78, 167)&, &rgb(166, 77, 121)&,
&rgb(133, 32, 12)&, &rgb(153, 0, 0)&, &rgb(180, 95, 6)&, &rgb(191, 144, 0)&, &rgb(56, 118, 29)&,
&rgb(19, 79, 92)&, &rgb(17, 85, 204)&, &rgb(11, 83, 148)&, &rgb(53, 28, 117)&, &rgb(116, 27, 71)&,
&rgb(91, 15, 0)&, &rgb(102, 0, 0)&, &rgb(120, 63, 4)&, &rgb(127, 96, 0)&, &rgb(39, 78, 19)&,
&rgb(12, 52, 61)&, &rgb(28, 69, 135)&, &rgb(7, 55, 99)&, &rgb(32, 18, 77)&, &rgb(76, 17, 48)&]
+ util.uploadMultiPictures = function(callback, options){
var opts = {
type :'image',
'upload' : 'active',
'browser' : '',
'crawler' : ''
path : '',
direct : false,
multi : true,
dest_dir : ''
opts = $.extend({}, opts, options);
require(['jquery', 'fileUploader'], function($, fileUploader){
fileUploader.show(function(images){
if(images.length & 0){
if($.isFunction(callback)){
callback(images);
+ util.editor = function(elm, callback){
var id = elm.
id = 'editor-' + Math.random();
if(!elm.editor) {
require(['editor'], function(){
var editor = tinyMCE.createEditor(id, {
plugins: [
&advlist autolink lists link image multiimage charmap print preview hr anchor pagebreak&,
&searchreplace wordcount visualblocks visualchars code fullscreen&,
&insertdatetime media nonbreaking save table contextmenu directionality&,
&emoticons template paste textcolor&
toolbar1: &undo redo | bold italic | forecolor backcolor | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | preview fullscreen&,
toolbar2: &code print | styleselect fontsizeselect link image multiimage media emoticons &,
language: 'zh_CN',
paste_webkit_styles: 'all',
paste_preprocess: function(plugin, args) {
args.content = args.content.replace(/!important/g, '');
fontsize_formats: &8pt 10pt 12pt 14pt 18pt 24pt 36pt&,
menubar: false
elm.editor =
editor.render();
if($.isFunction(callback)) {
callback(elm, editor);
getContent : function(){
if(elm.editor) {
return elm.editor.getContent();
return '';
+ // target dom 对象
+ util.emotion = function(elm, target, callback) {
require(['jquery.caret', 'bootstrap', 'css!../../components/emotions/emotions.css'],function($){
$(function() {
var emotions_html = '&table class=&emotions& cellspacing=&0& cellpadding=&0&&&tbody&&tr&&td&&div class=&eItem& style=&background-position:0px 0;& data-title=&微笑& data-code=&::)& data-gifurl=&http://res./zh_CN/images/mo/DEFAULT2/0.gif&&&/div&&/td&&td&&div class=&eItem& style=&background-position:-24px 0;& data-title=&撇嘴& data-code=&::~& data-gifurl=&http://res./zh_CN/images/mo/DEFAULT2/1.gif&&&/div&&/td&&td&&div class=&eItem& style=&background-position:-48px 0;& data-title=&色& data-code=&::B& data-gifurl=&http://res./zh_CN/images/mo/DEFAULT2/2.gif&&&/div&&/td&&td&&div class=&eItem& style=&background-position:-72px 0;& data-title=&发呆& data-code=&::|& data-gifurl=&http://res./zh_CN/images/mo/DEFAULT2/3.gif&&&/div&&/td&&td&&div class=&eItem& style=&background-position:-96px 0;& data-title=&得意& data-code=&:8-)& data-gifurl=&http://res./zh_CN/images/mo/DEFAULT2/4.gif&&&/div&&/td&&td&&div class=&eItem& style=&background-position:-120px 0;& data-title=&流泪& data-code=&::&& data-gifurl=&http://res./zh_CN/images/mo/DEFAULT2/5.gif&&&/div&&/td&&td&&div class=&eItem& style=&background-position:-144px 0;& data-title=&害羞& data-code=&::$& data-gifurl=&http://res./zh_CN/images/mo/DEFAULT2/6.gif&&&/div&&/td&&td&&div class=&eItem& style=&background-position:-168px 0;& data-title=&闭嘴& data-code=&::X& data-gifurl=&http://res./zh_CN/images/mo/DEFAULT2/7.gif&&&/div&&/td&&td&&div class=&eItem& style=&background-position:-192px 0;& data-title=&睡& data-code=&::Z& data-gifurl=&http://res./zh_CN/images/mo/DEFAULT2/8.gif&&&/div&&/td&&td&&div class=&eItem& style=&background-position:-216px 0;& data-title=&大哭& data-code=&::\'(& data-gifurl=&http://res./zh_CN/images/mo/DEFAULT2/9.gif&&&/div&&/td&&td&&div class=&eItem& style=&background-position:-240px 0;& data-title=&尴尬& data-code=&::-|& data-gifurl=&http://res./zh_CN/images/mo/DEFAULT2/10.gif&&&/div&&/td&&td&&div class=&eItem& style=&background-position:-264px 0;& data-title=&发怒& data-code=&::@& data-gifurl=&http://res./zh_CN/images/mo/DEFAULT2/11.gif&&&/div&&/td&&td&&div class=&eItem& style=&background-position:-288px 0;& data-title=&调皮& data-code=&::P& data-gifurl=&http://res./zh_CN/images/mo/DEFAULT2/12.gif&&&/div&&/td&&td&&div class=&eItem& style=&background-position:-312px 0;& data-title=&呲牙& data-code=&::D& data-gifurl=&http://res./zh_CN/images/mo/DEFAULT2/13.gif&&&/div&&/td&&td&&div class=&eItem& style=&background-position:-336px 0;& data-title=&惊讶& data-code=&::O& data-gifurl=&http://res./zh_CN/images/mo/DEFAULT2/14.gif&&&/div&&/td&&/tr&&tr&&td&&div class=&eItem& style=&background-position:-360px 0;& data-title=&难过& data-code=&::(& data-gifurl=&http://res./zh_CN/images/mo/DEFAULT2/15.gif&&&/div&&/td&&td&&div class=&eItem& style=&background-position:-384px 0;& data-title=&酷& data-code=&::+& data-gifurl=&http://res./zh_CN/images/mo/DEFAULT2/16.gif&&&/div&&/td&&td&&div class=&eItem& style=&background-position:-408px 0;& data-title=&冷汗& data-code=&:--b& data-gifurl=&http://res./zh_CN/images/mo/DEFAULT2/17.gif&&&/div&&/td&&td&&div class=&eItem& style=&background-position:-432px 0;& data-title=&抓狂& data-code=&::Q& data-gifurl=&http://res./zh_CN/images/mo/DEFAULT2/18.gif&&&/div&&/td&&td&&div class=&eItem& style=&background-position:-456px 0;& data-title=&吐& data-code=&::T& data-gifurl=&http://res./zh_CN/images/mo/DEFAULT2/19.gif&&&/div&&/td&&td&&div class=&eItem& style=&background-position:-480px 0;& data-title=&偷笑& data-code=&:,@P& data-gifurl=&http://res./zh_CN/images/mo/DEFAULT2/20.gif&&&/div&&/td&&td&&div class=&eItem& style=&background-position:-504px 0;& data-title=&可爱& data-code=&:,@-D& data-gifurl=&http://res./zh_CN/images/mo/DEFAULT2/21.gif&&&/div&&/td&&td&&div class=&eItem& style=&background-position:-528px 0;& data-title=&白眼& data-code=&::d& data-gifurl=&http://res./zh_CN/images/mo/DEFAULT2/22.gif&&&/div&&/td&&td&&div class=&eItem& style=&background-position:-552px 0;& data-title=&傲慢& data-code=&:,@o& data-gifurl=&http://res./zh_CN/images/mo/DEFAULT2/23.gif&&&/div&&/td&&td&&div class=&eItem& style=&background-position:-576px 0;& data-title=&饥饿& data-code=&::g& data-gifurl=&http://res./zh_CN/images/mo/DEFAULT2/24.gif&&&/div&&/td&&td&&div class=&eItem& style=&background-position:-600px 0;& data-title=&困& data-code=&:|-)& data-gifurl=&http://res./zh_CN/images/mo/DEFAULT2/25.gif&&&/div&&/td&&td&&div class=&eItem& style=&background-position:-624px 0;& data-title=&惊恐& data-code=&::!& data-gifurl=&http://res./zh_CN/images/mo/DEFAULT2/26.gif&&&/div&&/td&&td&&div class=&eItem& style=&background-position:-648px 0;& data-title=&流汗& data-code=&::L& data-gifurl=&http://res./zh_CN/images/mo/DEFAULT2/27.gif&&&/div&&/td&&td&&div class=&eItem& style=&background-position:-672px 0;& data-title=&憨笑& data-code=&::&& data-gifurl=&http://res./zh_CN/images/mo/DEFAULT2/28.gif&&&/div&&/td&&td&&div class=&eItem& style=&background-position:-696px 0;& data-title=&大兵& data-code=&::,@& data-gifurl=&http://res./zh_CN/images/mo/DEFAULT2/29.gif&&&/div&&/td&&/tr&&tr&&td&&div class=&eItem& style=&background-position:-720px 0;& data-title=&奋斗& data-code=&:,@f& data-gifurl=&http://res./zh_CN/images/mo/DEFAULT2/30.gif&&&/div&&/td&&td&&div class=&eItem& style=&background-position:-744px 0;& data-title=&咒骂& data-code=&::-S& data-gifurl=&http://res./zh_CN/images/mo/DEFAULT2/31.gif&&&/div&&/td&&td&&div class=&eItem& style=&background-position:-768px 0;& data-title=&疑问& data-code=&:?& data-gifurl=&http://res./zh_CN/images/mo/DEFAULT2/32.gif&&&/div&&/td&&td&&div class=&eItem& style=&background-position:-792px 0;& data-title=&嘘& data-code=&:,@x& data-gifurl=&http://res./zh_CN/images/mo/DEFAULT2/33.gif&&&/div&&/td&&td&&div class=&eItem& style=&background-position:-816px 0;& data-title=&晕& data-code=&:,@@& data-gifurl=&http://res./zh_CN/images/mo/DEFAULT2/34.gif&&&/div&&/td&&td&&div class=&eItem& style=&background-position:-840px 0;& data-title=&折磨& data-code=&::8& data-gifurl=&http://res./zh_CN/images/mo/DEFAULT2/35.gif&&&/div&&/td&&td&&div class=&eItem& style=&background-position:-864px 0;& data-title=&衰& data-code=&:,@!& data-gifurl=&http://res./zh_CN/images/mo/DEFAULT2/36.gif&&&/div&&/td&&td&&div class=&eItem& style=&background-position:-888px 0;& data-title=&骷髅& data-code=&:!!!& data-gifurl=&http://res./zh_CN/images/mo/DEFAULT2/37.gif&&&/div&&/td&&td&&div class=&eItem& style=&background-position:-912px 0;& data-title=&敲打& data-code=&:xx& data-gifurl=&http://res./zh_CN/images/mo/DEFAULT2/38.gif&&&/div&&/td&&td&&div class=&eItem& style=&background-position:-936px 0;& data-title=&再见& data-code=&:bye& data-gifurl=&http://res./zh_CN/images/mo/DEFAULT2/39.gif&&&/div&&/td&&td&&div class=&eItem& style=&background-position:-960px 0;& data-title=&擦汗& data-code=&:wipe& data-gifurl=&http://res./zh_CN/images/mo/DEFAULT2/40.gif&&&/div&&/td&&td&&div class=&eItem& style=&background-position:-984px 0;& data-title=&抠鼻& data-code=&:dig& data-gifurl=&http://res./zh_CN/images/mo/DEFAULT2/41.gif&&&/div&&/td&&td&&div class=&eItem& style=&background-position:-1008px 0;& data-title=&鼓掌& data-code=&:handclap& data-gifurl=&http://res./zh_CN/images/mo/DEFAULT2/42.gif&&&/div&&/td&&td&&div class=&eItem& style=&background-position:-1032px 0;& data-title=&糗大了& data-code=&:&-(& data-gifurl=&http://res./zh_CN/images/mo/DEFAULT2/43.gif&&&/div&&/td&&td&&div class=&eItem& style=&background-position:-1056px 0;& data-title=&坏笑& data-code=&:B-)& data-gifurl=&http://res./zh_CN/images/mo/DEFAULT2/44.gif&&&/div&&/td&&/tr&&tr&&td&&div class=&eItem& style=&background-position:-1080px 0;& data-title=&左哼哼& data-code=&:&@& data-gifurl=&http://res./zh_CN/images/mo/DEFAULT2/45.gif&&&/div&&/td&&td&&div class=&eItem& style=&background-position:-1104px 0;& data-title=&右哼哼& data-code=&:@&& data-gifurl=&http://res./zh_CN/images/mo/DEFAULT2/46.gif&&&/div&&/td&&td&&div class=&eItem& style=&background-position:-1128px 0;& data-title=&哈欠& data-code=&::-O& data-gifurl=&http://res./zh_CN/images/mo/DEFAULT2/47.gif&&&/div&&/td&&td&&div class=&eItem& style=&background-position:-1152px 0;& data-title=&鄙视& data-code=&:&-|& data-gifurl=&http://res./zh_CN/images/mo/DEFAULT2/48.gif&&&/div&&/td&&td&&div class=&eItem& style=&background-position:-1176px 0;& data-title=&委屈& data-code=&:P-(& data-gifurl=&http://res./zh_CN/images/mo/DEFAULT2/49.gif&&&/div&&/td&&td&&div class=&eItem& style=&background-position:-1200px 0;& data-title=&快哭了& data-code=&::\'|& data-gifurl=&http://res./zh_CN/images/mo/DEFAULT2/50.gif&&&/div&&/td&&td&&div class=&eItem& style=&background-position:-1224px 0;& data-title=&阴险& data-code=&:X-)& data-gifurl=&http://res./zh_CN/images/mo/DEFAULT2/51.gif&&&/div&&/td&&td&&div class=&eItem& style=&background-position:-1248px 0;& data-title=&亲亲& data-code=&::*& data-gifurl=&http://res./zh_CN/images/mo/DEFAULT2/52.gif&&&/div&&/td&&td&&div class=&eItem& style=&background-position:-1272px 0;& data-title=&吓& data-code=&:@x& data-gifurl=&http://res./zh_CN/images/mo/DEFAULT2/53.gif&&&/div&&/td&&td&&div class=&eItem& style=&background-position:-1296px 0;& data-title=&可怜& data-code=&:8*& data-gifurl=&http://res./zh_CN/images/mo/DEFAULT2/54.gif&&&/div&&/td&&td&&div class=&eItem& style=&background-position:-1320px 0;& data-title=&菜刀& data-code=&:pd& data-gifurl=&http://res./zh_CN/images/mo/DEFAULT2/55.gif&&&/div&&/td&&td&&div class=&eItem& style=&background-position:-1344px 0;& data-title=&西瓜& data-code=&:&W&& data-gifurl=&http://res./zh_CN/images/mo/DEFAULT2/56.gif&&&/div&&/td&&td&&div class=&eItem& style=&background-position:-1368px 0;& data-title=&啤酒& data-code=&:beer& data-gifurl=&http://res./zh_CN/images/mo/DEFAULT2/57.gif&&&/div&&/td&&td&&div class=&eItem& style=&background-position:-1392px 0;& data-title=&篮球& data-code=&:basketb& data-gifurl=&http://res./zh_CN/images/mo/DEFAULT2/58.gif&&&/div&&/td&&td&&div class=&eItem& style=&background-position:-1416px 0;& data-title=&乒乓& data-code=&:oo& data-gifurl=&http://res./zh_CN/images/mo/DEFAULT2/59.gif&&&/div&&/td&&/tr&&tr&&td&&div class=&eItem& style=&background-position:-1440px 0;& data-title=&咖啡& data-code=&:coffee& data-gifurl=&http://res./zh_CN/images/mo/DEFAULT2/60.gif&&&/div&&/td&&td&&div class=&eItem& style=&background-position:-1464px 0;& data-title=&饭& data-code=&:eat& data-gifurl=&http://res./zh_CN/images/mo/DEFAULT2/61.gif&&&/div&&/td&&td&&div class=&eItem& style=&background-position:-1488px 0;& data-title=&猪头& data-code=&:pig& data-gifurl=&http://res./zh_CN/images/mo/DEFAULT2/62.gif&&&/div&&/td&&td&&div class=&eItem& style=&background-position:-1512px 0;& data-title=&玫瑰& data-code=&:rose& data-gifurl=&http://res./zh_CN/images/mo/DEFAULT2/63.gif&&&/div&&/td&&td&&div class=&eItem& style=&background-position:-1536px 0;& data-title=&凋谢& data-code=&:fade& data-gifurl=&http://res./zh_CN/images/mo/DEFAULT2/64.gif&&&/div&&/td&&td&&div class=&eItem& style=&background-position:-1560px 0;& data-title=&示爱& data-code=&:showlove& data-gifurl=&http://res./zh_CN/images/mo/DEFAULT2/65.gif&&&/div&&/td&&td&&div class=&eItem& style=&background-position:-1584px 0;& data-title=&爱心& data-code=&:heart& data-gifurl=&http://res./zh_CN/images/mo/DEFAULT2/66.gif&&&/div&&/td&&td&&div class=&eItem& style=&background-position:-1608px 0;& data-title=&心碎& data-code=&:break& data-gifurl=&http://res./zh_CN/images/mo/DEFAULT2/67.gif&&&/div&&/td&&td&&div class=&eItem& style=&background-position:-1632px 0;& data-title=&蛋糕& data-code=&:cake& data-gifurl=&http://res./zh_CN/images/mo/DEFAULT2/68.gif&&&/div&&/td&&td&&div class=&eItem& style=&background-position:-1656px 0;& data-title=&闪电& data-code=&:li& data-gifurl=&http://res./zh_CN/images/mo/DEFAULT2/69.gif&&&/div&&/td&&td&&div class=&eItem& style=&background-position:-1680px 0;& data-title=&炸弹& data-code=&:bome& data-gifurl=&http://res./zh_CN/images/mo/DEFAULT2/70.gif&&&/div&&/td&&td&&div class=&eItem& style=&background-position:-1704px 0;& data-title=&刀& data-code=&:kn& data-gifurl=&http://res./zh_CN/images/mo/DEFAULT2/71.gif&&&/div&&/td&&td&&div class=&eItem& style=&background-position:-1728px 0;& data-title=&足球& data-code=&:footb& data-gifurl=&http://res./zh_CN/images/mo/DEFAULT2/72.gif&&&/div&&/td&&td&&div class=&eItem& style=&background-position:-1752px 0;& data-title=&瓢虫& data-code=&:ladybug& data-gifurl=&http://res./zh_CN/images/mo/DEFAULT2/73.gif&&&/div&&/td&&td&&div class=&eItem& style=&background-position:-1776px 0;& data-title=&便便& data-code=&:shit& data-gifurl=&http://res./zh_CN/images/mo/DEFAULT2/74.gif&&&/div&&/td&&/tr&&tr&&td&&div class=&eItem& style=&background-position:-1800px 0;& data-title=&月亮& data-code=&:moon& data-gifurl=&http://res./zh_CN/images/mo/DEFAULT2/75.gif&&&/div&&/td&&td&&div class=&eItem& style=&background-position:-1824px 0;& data-title=&太阳& data-code=&:sun& data-gifurl=&http://res./zh_CN/images/mo/DEFAULT2/76.gif&&&/div&&/td&&td&&div class=&eItem& style=&background-position:-1848px 0;& data-title=&礼物& data-code=&:gift& data-gifurl=&http://res./zh_CN/images/mo/DEFAULT2/77.gif&&&/div&&/td&&td&&div class=&eItem& style=&background-position:-1872px 0;& data-title=&拥抱& data-code=&:hug& data-gifurl=&http://res./zh_CN/images/mo/DEFAULT2/78.gif&&&/div&&/td&&td&&div class=&eItem& style=&background-position:-1896px 0;& data-title=&强& data-code=&:strong& data-gifurl=&http://res./zh_CN/images/mo/DEFAULT2/79.gif&&&/div&&/td&&td&&div class=&eItem& style=&background-position:-1920px 0;& data-title=&弱& data-code=&:weak& data-gifurl=&http://res./zh_CN/images/mo/DEFAULT2/80.gif&&&/div&&/td&&td&&div class=&eItem& style=&background-position:-1944px 0;& data-title=&握手& data-code=&:share& data-gifurl=&http://res./zh_CN/images/mo/DEFAULT2/81.gif&&&/div&&/td&&td&&div class=&eItem& style=&background-position:-1968px 0;& data-title=&胜利& data-code=&:v& data-gifurl=&http://res./zh_CN/images/mo/DEFAULT2/82.gif&&&/div&&/td&&td&&div class=&eItem& style=&background-position:-1992px 0;& data-title=&抱拳& data-code=&:@)& data-gifurl=&http://res./zh_CN/images/mo/DEFAULT2/83.gif&&&/div&&/td&&td&&div class=&eItem& style=&background-position:-2016px 0;& data-title=&勾引& data-code=&:jj& data-gifurl=&http://res./zh_CN/images/mo/DEFAULT2/84.gif&&&/div&&/td&&td&&div class=&eItem& style=&background-position:-2040px 0;& data-title=&拳头& data-code=&:@@& data-gifurl=&http://res./zh_CN/images/mo/DEFAULT2/85.gif&&&/div&&/td&&td&&div class=&eItem& style=&background-position:-2064px 0;& data-title=&差劲& data-code=&:bad& data-gifurl=&http://res./zh_CN/images/mo/DEFAULT2/86.gif&&&/div&&/td&&td&&div class=&eItem& style=&background-position:-2088px 0;& data-title=&爱你& data-code=&:lvu& data-gifurl=&http://res./zh_CN/images/mo/DEFAULT2/87.gif&&&/div&&/td&&td&&div class=&eItem& style=&background-position:-2112px 0;& data-title=&NO& data-code=&:no& data-gifurl=&http://res./zh_CN/images/mo/DEFAULT2/88.gif&&&/div&&/td&&td&&div class=&eItem& style=&background-position:-2136px 0;& data-title=&OK& data-code=&:ok& data-gifurl=&http://res./zh_CN/images/mo/DEFAULT2/89.gif&&&/div&&/td&&/tr&&tr&&td&&div class=&eItem& style=&background-position:-2160px 0;& data-title=&爱情& data-code=&:love& data-gifurl=&http://res./zh_CN/images/mo/DEFAULT2/90.gif&&&/div&&/td&&td&&div class=&eItem& style=&background-position:-2184px 0;& data-title=&飞吻& data-code=&:&L&& data-gifurl=&http://res./zh_CN/images/mo/DEFAULT2/91.gif&&&/div&&/td&&td&&div class=&eItem& style=&background-position:-2208px 0;& data-title=&跳跳& data-code=&:jump& data-gifurl=&http://res./zh_CN/images/mo/DEFAULT2/92.gif&&&/div&&/td&&td&&div class=&eItem& style=&background-position:-2232px 0;& data-title=&发抖& data-code=&:shake& data-gifurl=&http://res./zh_CN/images/mo/DEFAULT2/93.gif&&&/div&&/td&&td&&div class=&eItem& style=&background-position:-2256px 0;& data-title=&怄火& data-code=&:&O&& data-gifurl=&http://res./zh_CN/images/mo/DEFAULT2/94.gif&&&/div&&/td&&td&&div class=&eItem& style=&background-position:-2280px 0;& data-title=&转圈& data-code=&:circle& data-gifurl=&http://res./zh_CN/images/mo/DEFAULT2/95.gif&&&/div&&/td&&td&&div class=&eItem& style=&background-position:-2304px 0;& data-title=&磕头& data-code=&:kotow& data-gifurl=&http://res./zh_CN/images/mo/DEFAULT2/96.gif&&&/div&&/td&&td&&div class=&eItem& style=&background-position:-2328px 0;& data-title=&回头& data-code=&:turn& data-gifurl=&http://res./zh_CN/images/mo/DEFAULT2/97.gif&&&/div&&/td&&td&&div class=&eItem& style=&background-position:-2352px 0;& data-title=&跳绳& data-code=&:skip& data-gifurl=&http://res./zh_CN/images/mo/DEFAULT2/98.gif&&&/div&&/td&&td&&div class=&eItem& style=&background-position:-2376px 0;& data-title=&挥手& data-code=&:oY& data-gifurl=&http://res./zh_CN/images/mo/DEFAULT2/99.gif&&&/div&&/td&&td&&div class=&eItem& style=&background-position:-2400px 0;& data-title=&激动& data-code=&:#-0& data-gifurl=&http://res./zh_CN/images/mo/DEFAULT2/100.gif&&&/div&&/td&&td&&div class=&eItem& style=&background-position:-2424px 0;& data-title=&街舞& data-code=&:hiphot& data-gifurl=&http://res./zh_CN/images/mo/DEFAULT2/101.gif&&&/div&&/td&&td&&div class=&eItem& style=&background-position:-2448px 0;& data-title=&献吻& data-code=&:kiss& data-gifurl=&http://res./zh_CN/images/mo/DEFAULT2/102.gif&&&/div&&/td&&td&&div class=&eItem& style=&background-position:-2472px 0;& data-title=&左太极& data-code=&:&&& data-gifurl=&http://res./zh_CN/images/mo/DEFAULT2/103.gif&&&/div&&/td&&td&&div class=&eItem& style=&background-position:-2496px 0;& data-title=&右太极& data-code=&:&&& data-gifurl=&http://res./zh_CN/images/mo/DEFAULT2/104.gif&&&/div&&/td&&/tr&&/tbody&&/table&&div class=&emotionsGif& style=&&&&/div&';
$(elm).popover({
html: true,
content: emotions_html,
placement:&bottom&
$(elm).one('shown.bs.popover', function(){
$(elm).next().mouseleave(function(){
$(elm).popover('hide');
$(elm).next().delegate(&.eItem&, &mouseover&, function(){
var emo

我要回帖

更多关于 json获取key值 的文章

 

随机推荐