欢迎光临散文网 会员登陆 & 注册

JQUERY弹幕网AJAX加载下拉框数据,封装,CDN修改别人脚本文件,乱码处理【诗书画唱】

2020-11-30 08:45 作者:诗书画唱  | 我要投稿


package com.jy.controller;


import java.io.IOException;

import java.util.List;


import javax.servlet.ServletException;

import javax.servlet.annotation.WebServlet;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;


import com.jy.bean.Dminfo;

import com.jy.dao.DminfoDao;


/**

 * Servlet implementation class DanmuServlet

 */

@WebServlet("/ds")

public class DanmuServlet extends HttpServlet {

private static final long serialVersionUID = 1L;

       

    /**

     * @see HttpServlet#HttpServlet()

     */

    public DanmuServlet() {

        super();

        // TODO Auto-generated constructor stub

    }


/**

* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)

*/

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

// TODO Auto-generated method stub

this.doPost(request, response);

}


/**

* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)

*/

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

// TODO Auto-generated method stub

String method = request.getParameter("method");

DminfoDao dminfoDao = new DminfoDao();

if("save".equals(method)) {

//获取输入的弹幕的信息

String text = request.getParameter("text");

//中文乱码处理

text = new String(text.getBytes("iso8859-1"),"utf-8");

System.out.println(text);

String color = request.getParameter("color");

System.out.println(color);

String strSize = request.getParameter("size");

Integer size = parseToNum(strSize);

String strPosition = request.getParameter("position");

Integer position = this.parseToNum(strPosition);

String strTime = request.getParameter("time");

Integer time = this.parseToNum(strTime);

//封装数据

Dminfo dm = new Dminfo();

dm.setText(text);

dm.setColor(color);

dm.setSize(size);

dm.setPosition(position);

dm.setTime(time);

dminfoDao.add(dm);

} else {

//String jsonStr = "{dms:[{\"text\":\"神光护体\",\"color\":\"#0000EE\",\"size\":1,\"position\":0,\"time\":112}]}";

List<Dminfo>list = dminfoDao.selectAll();

StringBuilder jsonStr = new StringBuilder();

jsonStr.append("{dms:[");

String dot = "";

for(Dminfo dm : list) {

jsonStr.append(dot);

jsonStr.append("{\"text\":\"");

jsonStr.append(dm.getText());

jsonStr.append("\",\"color\":\"");

jsonStr.append(dm.getColor());

jsonStr.append("\",\"size\":");

jsonStr.append(dm.getSize());

jsonStr.append(",\"position\":");

jsonStr.append(dm.getPosition());

jsonStr.append(",\"time\":");

jsonStr.append(dm.getTime());

jsonStr.append("}");

dot = ",";

}

jsonStr.append("]}");

System.out.println(jsonStr);

response.setCharacterEncoding("utf-8");

response.getWriter().write(jsonStr.toString());

}

}

    

//将字符串转换成整型变量的方法

private Integer parseToNum(String s){

Integer num = null;

if(s != null && s.length() > 0) {

num = Integer.parseInt(s);

}

return num;

}

}


——————

前言:弹幕网的效果和个人对其的理解是“查询弹幕”就是在对应的时间轴显示,从数据库中查出来。效果是发弹幕时可以保存弹幕到数据库,同时,刷新时在对应的部分会从数据库查询出弹幕,并在对应的时间轴显现。



乱码处理:

下面含我自己想出来的修改别人的脚本文件高效的好方法。

有些自己想出来,的确是值得骄傲的一件事。——诗书画唱


分享自己的学习方法(我有时会毫无保留地分享我的方法,当然自己获得这些方法肯定比你们直接到我这里获取方法耗时多,同时毅力和耐心很重要,我的方法会分享很多,你不坚持学完,有时只会是一知半解,只会皮毛,想比一些人更强等的目标等也不会那么容易实现):


看教程视频是,从头到尾看,遇到自己认为好的就是亲自动手,截图,写文字到b站专栏的草稿箱,之后可以发布。遇到认为会的,容易等的就在这段时间做别的事。很多时候可以2倍或1.5倍速看。

——————————

有些时候一些JS等的脚本文件自己会写,但可能会花很多不必要的时间,所以为了更好的满足自己的需求和节省时间成高效,要自己学会修改别人写的脚本文件,之后去用。

——————


作业和我给出的答案:

加载下拉框数据

package com.SSHC.bean;


public class Addr {

    private Integer id;

    private Integer pid;

    private String name;

    public Addr(Integer id,String n){

    this.id = id;

    this.name = n;

    }

public Integer getId() {

return id;

}

public void setId(Integer id) {

this.id = id;

}

public Integer getPid() {

return pid;

}

public void setPid(Integer pid) {

this.pid = pid;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

}

package com.SSHC.controller;


import java.io.IOException;

import java.util.ArrayList;

import java.util.List;


import javax.servlet.ServletException;

import javax.servlet.annotation.WebServlet;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;


import com.SSHC.bean.Addr;


/**

 * Servlet implementation class ProvServlet

 */

@WebServlet("/ps")

public class ProvServlet extends HttpServlet {

private static final long serialVersionUID = 1L;

       

    /**

     * @see HttpServlet#HttpServlet()

     */

    public ProvServlet() {

        super();

        // TODO Auto-generated constructor stub

    }


/**

* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)

*/

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

// TODO Auto-generated method stub

this.doPost(request, response);

}


/**

* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)

*/

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

// TODO Auto-generated method stub

//获取省份下拉框中的数据(这里暂时用数组代替数据库查询)

List<Addr>list = new ArrayList<Addr>();

Addr a1 = new Addr(1,"湖南");

Addr a2 = new Addr(2,"湖北");

Addr a3 = new Addr(3,"江西");

Addr a4 = new Addr(4,"福建");

list.add(a1);

list.add(a2);

list.add(a3);

list.add(a4);


//方法一:拼接Html字符串

//拼接一段html:将list中的数据全部转换成html代码

//<option value='1'>湖南</option>

// StringBuilder html = new StringBuilder();

// for(Addr addr : list) {

// html.append("<option value='");

// html.append(addr.getId());

// html.append("'>");

// html.append(addr.getName());

// html.append("</option>");

// }

// response.setCharacterEncoding("utf-8");

// //将html代码提交到回调函数中

// response.getWriter().write(html.toString());


//方法二:拼接JSON字符串

//[{"id":1,"name":"湖南"},{"id":2,"name":"湖北"}]

StringBuilder jsonStr = new StringBuilder("[");

String dot = "";

for(Addr addr : list) {

jsonStr.append(dot);

jsonStr.append("{\"id\":");

jsonStr.append(addr.getId());

jsonStr.append(",\"name\":\"");

jsonStr.append(addr.getName());

jsonStr.append("\"}");

dot = ",";

}

jsonStr.append("]");

response.setCharacterEncoding("utf-8");

response.getWriter().write(jsonStr.toString());

}


}


<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

<%

    String path = request.getContextPath();

    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

    <head>

        <base hreff="<%=basePath%>">

        <title></title>

        <meta http-equiv="pragma" content="no-cache">

        <meta http-equiv="cache-control" content="no-cache">

        <meta http-equiv="expires" content="0">

        <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">

        <meta http-equiv="description" content="This is my page">

        <script type="text/javascript" srcc="js/jquery-1.11.0.js"></script>

        <script type="text/javascript">

            $(function(){

            //提交一个请求下拉框数据的ajax请求

            $.ajax({

            url: 'ps',

            type: 'POST',

            success: function(data){

            //方法一:

            //$('#prov').html(data);

            //方法二:

            //将data转换成真正的js对象

            var arr = JSON.parse(data);

            //var arr = eval('(' + data + ')');

            for(var i = 0;i < arr.length;i ++) {

            var ad = arr[i];

            //将选项放到下拉框中去

            $('#prov').append($('<option value="' 

            + ad.id + '">'

            + ad.name + '</option>'));

            }

            }

            });

            });

        </script>

    </head>

    <body>

        <select id="prov"></select>

    </body>

</html>


实现弹幕保存功能。



弹幕网:


create table Dminfo(

id int primary key auto_increment,

text varchar(100) ,

color varchar(100) ,

size int,

position int,

time int

);


select * from Dminfo

drop table Dminfo

package com.SSHC.bean;


public class Dminfo {

    private Integer id;//弹幕编号

    private String text;//弹幕内容

    private String color;//弹幕的字体颜色

    private Integer size;//弹幕的字体大小

    private Integer position;//弹幕的显示位置

    private Integer time;//弹幕显示时间

public Integer getId() {

return id;

}

public void setId(Integer id) {

this.id = id;

}

public String getText() {

return text;

}

public void setText(String text) {

this.text = text;

}

public String getColor() {

return color;

}

public void setColor(String color) {

this.color = color;

}

public Integer getSize() {

return size;

}

public void setSize(Integer size) {

this.size = size;

}

public Integer getPosition() {

return position;

}

public void setPosition(Integer position) {

this.position = position;

}

public Integer getTime() {

return time;

}

public void setTime(Integer time) {

this.time = time;

}

}


package com.SSHC.controller;


import java.io.IOException;

import java.util.List;


import javax.servlet.ServletException;

import javax.servlet.annotation.WebServlet;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;




import com.SSHC.bean.Dminfo;

import com.SSHC.dao.BaseDao;

import com.SSHC.dao.DminfoDao;




/**

 * Servlet implementation class DanmuServlet

 */

@WebServlet("/ds")

public class DanmuServlet extends HttpServlet {

private static final long serialVersionUID = 1L;

       

    /**

     * @see HttpServlet#HttpServlet()

     */

    public DanmuServlet() {

        super();

        // TODO Auto-generated constructor stub

    }


/**

* @see HttpServlet#doGet(HttpServletRequest request,

*  HttpServletResponse response)

*/

protected void doGet(HttpServletRequest request,

HttpServletResponse response) 

throws ServletException, IOException {

// TODO Auto-generated method stub

this.doPost(request, response);

}


/**

* @see HttpServlet#doPost(HttpServletRequest 

* request, HttpServletResponse response)

*/

protected void doPost(HttpServletRequest request, 

HttpServletResponse response) 

throws ServletException, IOException {

// TODO Auto-generated method stub

request.setCharacterEncoding("GBK");

String method = request.getParameter("method");

if("save".equals(method)) {

//获取输入的弹幕的信息

String text = request.getParameter("text");

String text2=

new String(text.getBytes("iso8859-1"),"UTF-8") ;


System.out.println(text2);

String color = request.getParameter("color");

System.out.println(color);

String strSize = request.getParameter("size");

System.out.println(strSize);

String strPosition = request.getParameter("position");


System.out.println(strPosition);



String strTime = request.getParameter("time");

System.out.println(strTime);







DminfoDao A=new DminfoDao();

Dminfo B=new Dminfo();

B.setText(text2);

B.setColor(color);

B.setPosition(Integer.valueOf(strPosition));

B.setSize(Integer.valueOf(strSize));

B.setTime(Integer.valueOf(strTime));

try {

A.add(B);

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

String S;

if(BaseDao.countAdd!=null) {

 S="添加成功!";

//request.setAttribute("B", S);

//request.getRequestDispatcher("ManageAllUserServlet")

//

// .forward(request, response);

 

 System.out.println(S);


}else


{


 S="添加失败!";

 System.out.println(S);

 }




} else {

System.out.println("查询弹幕");

//String jsonStr = "{dms:[{\"text\":\"神光护体\",\"color\":\"#0000EE\",\"size\":1,\"position\":0,\"time\":112}]}";


DminfoDao ud = new DminfoDao();



List<Object> list;


try {

list = ud.selectAll(Dminfo.class,null);



StringBuilder jsonStr = new StringBuilder();

jsonStr.append("{dms:[");

String dot = "";

for(Object o : list) {

Dminfo dm = ( Dminfo)o;

jsonStr.append(dot);

jsonStr.append("{\"text\":\"");

jsonStr.append(dm.getText());

jsonStr.append("\",\"color\":\"");

jsonStr.append(dm.getColor());

jsonStr.append("\",\"size\":");

jsonStr.append(dm.getSize());

jsonStr.append(",\"position\":");

jsonStr.append(dm.getPosition());

jsonStr.append(",\"time\":");

jsonStr.append(dm.getTime());

jsonStr.append("}");

dot = ",";

}

jsonStr.append("]}");

System.out.println(jsonStr);

response.setCharacterEncoding("utf-8");

response.getWriter().write(jsonStr.toString());

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}


}


package com.SSHC.dao;


import java.lang.reflect.Field;

import java.lang.reflect.Method;

import java.sql.Connection;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.util.ArrayList;

import java.util.List;


import com.SSHC.util.DbUtil;











//万能Dao

//T不是一个具体的java类,他是一个泛型参数


public class BaseDao<T> {


    public<T> List<T>selectAll(Class cls,String SQL) throws Exception{

    Connection conn = null;

    PreparedStatement pstm = null;

    ResultSet rs = null;

    List<T>list = new ArrayList<T>();

    //通过反射技术获取表的名字,表的名字刚好和bean的名字一样

    //获取类的类名

    String tableName = cls.getSimpleName();

    String sql=null;

    if(SQL==null){

    sql = "select * from " + tableName;}

    else if(SQL!=null){

        sql = "select * from " + tableName

        +SQL;}

    System.out.println(sql);

   

    conn = DbUtil.getConn();

    pstm = conn.prepareStatement(sql);

    rs = pstm.executeQuery();

    //获取bean中的所有属性名

Field []fs = cls.getDeclaredFields();

    while(rs.next()) {

    //通过反射创建出cls对象的实例

    Object obj = cls.newInstance();

    for(int i = 0;i < fs.length;i ++) {

    //bean中的属性名

    String fname = fs[i].getName();

    //获取bean中的属性的类型

    Class type = fs[i].getType();

    Object o = rs.getObject(fname);

    //System.out.println(o); 

    //将属性对应的set方法名拼接出来

    //取出属性名的首字母,将它变成大写

   String methodName = "set" 

    + fname.substring(0,1).toUpperCase() 

    + fname.substring(1);

    //System.out.println(methodName);

    //通过反射调用set方法

  Method m = cls.getDeclaredMethod(methodName, type);

    System.out.println(m);

    m.invoke(obj, o);   

    }

list.add((T)obj);

    }

    return list;

    }

public static Integer countAdd;

    public Integer add(T t) throws Exception{

    Connection conn = null;

    PreparedStatement pstm = null;

Integer count = -1;

    String tableName = t.getClass().getSimpleName();

 //System.out.println(tableName);

StringBuilder sql = new StringBuilder("insert into "

 + tableName + " (");

 //取出t对象中的所有的属性名

    Field []fs = t.getClass().getDeclaredFields();

    String dot = "";

    for(int i = 0;i < fs.length;i ++) {

    sql.append(dot);

    String fname = fs[i].getName();

    sql.append(fname);

    dot = ",";

    }

    sql.append(")values(");

    String dot1 = "";

    for(int i = 0;i < fs.length;i ++) {

    sql.append(dot1);

    sql.append("?");

    dot1 = ",";

    }

    sql.append(")");

    //System.out.println(sql);

   

    conn = DbUtil.getConn();

    pstm = conn.prepareStatement(sql.toString());

    //调用t对象中所有的get方法

    for(int i = 0;i < fs.length;i ++) {

    //取出属性名

    String fname = fs[i].getName();

    //拼接get方法

String methodName = "get" 

    + fname.substring(0,1).toUpperCase()

    + fname.substring(1);

    //取出需要调用的方法

Method m = t.getClass().getDeclaredMethod(methodName);

    //反射调用get方法

    Object val = m.invoke(t);

    System.out.println("新增的数据是:" + val);

    //设置占位符

    pstm.setObject(i + 1, val);

    }

    count = pstm.executeUpdate();

    countAdd=count;

    System.out.println(countAdd);

    return count;

    }

    public static Integer countUpdate;

    public Integer update(T t) throws Exception{

    Connection conn = null;

PreparedStatement pstm = null;

Integer count = -1;


StringBuilder sql = new StringBuilder("update ");

//获取表名,就是获取t对象的类名

Class cls = t.getClass();

String tableName = cls.getSimpleName();

sql.append(tableName + " set ");

//获取t对象的所有属性名

Field[]fs = cls.getDeclaredFields();

//每个javabean的第一个属性必须是id

//下标是从1开始的,也就是排除了id属性

String dot = "";

//定义一个List存放所有的修改的值

List<Object>params = new ArrayList<Object>();

for(int i = 0;i < fs.length;i ++) {

Field f = fs[i];

//获取属性名

String fname = f.getName();

System.out.println("下标为"+i+"的属性名:"+fname);

//调用getXXX方法来获取t中的属性值

String methodName = "get" 

+ fname.substring(0,1).toUpperCase()

+ fname.substring(1);

System.out.println(methodName);

//通过反射获取方法对象

Method m = cls.getDeclaredMethod(methodName);

//反射调用getXXX方法

Object obj = m.invoke(t);

            

//当获取到的值不为空时,才能进行修改

if(obj != null) {

sql.append(dot);

sql.append(fname + " = ? ");



dot = ",";

params.add(obj);

}

}

//将id也放到params容器中去

// Method m1 = cls.getDeclaredMethod("getId");

Method m1 = cls.getDeclaredMethod(

"get" 

+fs[0].getName().substring(0,1)

.toUpperCase()

+ fs[0].getName().substring(1));

Object id = m1.invoke(t);

params.add(id);

//拼接where条件

fs[0].getName();

System.out.println("这个表的第一列的列名"

+ "(一般都为编号名)为:"+fs[0].getName());

// sql.append("where id = ? ");

sql.append("where "+fs[0].getName()+" = ? ");

System.out.println(sql);


conn = DbUtil.getConn();

pstm = conn.prepareStatement(sql.toString());

//设置占位符的值

for(int i = 0;i < params.size();i ++) {

pstm.setObject(i + 1, params.get(i));

}

System.out.println("这时执行的修改语句为:"+sql);

count = pstm.executeUpdate();

countUpdate=count;

    return count;

    }

//    public Integer delete(Integer id){

//    return 0;

//    }

  //万能Dao删除方法

    public static Integer countDelete;

    public Integer delete(Integer id,Class cls) 

    throws Exception{

    Connection conn = null;

PreparedStatement pstm = null;

Integer count = -1;

String tableName = cls.getSimpleName();

Field[]fs = cls.getDeclaredFields();

for(int i = 0;i < fs.length;i ++) {

Field f = fs[i];

//获取属性名:fs[i].getName();

String fname = f.getName();

System.out.println("下标为"+i+"的属性名:"+fname);

//调用getXXX方法来获取t中的属性值

String methodName = "get" 

+ fname.substring(0,1).toUpperCase()

+ fname.substring(1);

System.out.println(methodName);

//通过反射获取方法对象

Method m = cls.getDeclaredMethod(methodName);

//反射调用getXXX方法

//当获取到的值不为空时,才能进行修改


}



// String sql = "delete from " + tableName

// + " where id = ?";

String sql = "delete from " + tableName

+ " where "+fs[0].getName()+" = ?";

conn = DbUtil.getConn();

pstm = conn.prepareStatement(sql);

pstm.setInt(1, id);

count = pstm.executeUpdate();

countDelete=count;

    return count;

    }

    public static void main(String[] args) throws Exception {

//    Dao ud= new Dao();

//

////    User u = ud.selectByActAndPwd("1","1",null);

//    User u = ud.selectByActAndPwd(null,null,1);

//    System.out.println(u.getAct()); 

//    System.out.println(u.getId()); 

//      List<Object> list1;

//

//    list1 = D.selectAll(Comments.class);

//

//   

//      

//       for(Object o : list1) {

//    Comments C= (Comments)o;

//    System.out.println(C.getCommentsId());

//    System.out.println(C.getId());

//      System.out.println(C.getCommentsId());

   

       }

     

      

     

   


}


package com.SSHC.dao;


import com.SSHC.bean.Dminfo;


public class DminfoDao extends BaseDao<Dminfo> {


}

package com.SSHC.util;


import java.io.IOException;

import java.io.InputStream;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.util.Properties;


public class DbUtil {

private static String driverName;

    private static String url;

    private static String user;

    private static String pwd;

    

    static {

    //读取properties文件

    Properties prop = new Properties();

    //将db.properties文件读取到内存中去

    InputStream is = DbUtil.class.getClassLoader()

    .getResourceAsStream("db.properties");

    //加载内容

    try {

prop.load(is);

//读取内容

driverName = prop.getProperty("dn");

url = prop.getProperty("url");

user = prop.getProperty("un");

pwd = prop.getProperty("up");

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

    }

    

    //获取数据库连接对象的方法

    public static Connection getConn(){

    Connection conn = null;

    try {

Class.forName(driverName);

conn = DriverManager.getConnection(url,user,pwd);

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}   

    return conn;

    }

    

    public static void close(ResultSet rs,PreparedStatement pstm

    ,Connection conn){

        try {

        if(rs != null) {

            rs.close();

            }

            if(pstm != null) {

            pstm.close();

            }

            if(conn != null) {

            conn.close();

            }

        } catch(Exception e) {

        e.printStackTrace();

        }

    }

}

dn=com.mysql.jdbc.Driver

url=jdbc:mysql://localhost:3306/firstjsp?useUnicode=true&characterEncoding=utf-8

un=root

up=root

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

<%

    String path = request.getContextPath();

    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

    <head>

        <base hreff="<%=basePath%>">

        <title></title>

        <meta http-equiv="pragma" content="no-cache">

        <meta http-equiv="cache-control" content="no-cache">

        <meta http-equiv="expires" content="0">

        <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">

        <meta http-equiv="description" content="This is my page">

        <link rel="stylesheet" type="text/css" href="css/danmuplayer.css">

        <script type="text/javascript" srcc="js/jquery-1.11.0.js"></script>

        <script type="text/javascript" srcc="js/danmuplayer.js"></script>

        <script type="text/javascript">

            $(function(){

            $('#danmup').danmuplayer({

            src: 'a.mp4',//视频的路径

            width: 1200,//屏幕宽度1200px

            height: 600,//屏幕高度600px

            speed: 20000,//弹幕飘过的速度,穿过视频屏幕的时间

            danmuss: {},

            default_font_color: '#FFFFFF',//默认的弹幕颜色

            font_size_small: 50,//小号弹幕字体大小

            font_size_big: 75,//大号弹幕字体大小

            opacity: '1',//弹幕字体的透明度,为0则完全透明

            top_botton_danmu_time: 6000,//底部及顶部弹幕存留的时间

            url_to_get_danmu: 'ds?method=query',//获取所有弹幕信息的url

            url_to_post_danmu: 'ds?method=save'//保存弹幕信息的url

            });

            })

        </script>

    </head>

    <body>

        <div id="danmup"></div>

    </body>

</html>


——————————————————


CDN的全称是Content Delivery Network,即内容分发网络。CDN是构建在现有网络基础之上的智能虚拟网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。CDN的关键技术主要有内容存储和分发技术。


JQUERY弹幕网AJAX加载下拉框数据,封装,CDN修改别人脚本文件,乱码处理【诗书画唱】的评论 (共 条)

分享到微博请遵守国家法律