ja

阅读 / 问答 / 标签

Trojan手动搭建详解

安装acme.sh需要的依赖。 执行如下命令使用nano打开Nginx配置文件,删除其中server块,并添加对/etc/nginx/sites-enabled/文件夹的索引。 如果遇到 setenforce: SELinux is disabled错误,说明selinux已经被彻底的关闭了 重新开启selinux,请按下面步骤: 必须重启linux Nginx启动命令和Trojan一样,就不过多解释了 当从Let"s Encrypt获得证书时,Let"s Encrypt会验证证书中域名的控制权。一般采用HTTP-01或DNS-01方式来验证,详情参考官方文档 验证方式 。本文使用HTTP-01方式验证,若需要使用DNS-01方式验证,参考acme.sh官方文档 How to use DNS API 。 第一条命令新建一个文件夹/etc/letsencrypt/live用于存放证书。第二条命令将证书文件夹所有者改为acme,使得用户acme有权限写入证书。 本文使用acme.sh的http方式申请证书,http方式需要在网站根目录下放置一个文件来验证域名所有权,故需要acme.sh和nginx均对webroot目录有权限,故将运行Nginx的worker进程加入certusers组,下文再将webroot目录附加给certusers组即可。 在不同的Linux发新版本中,nginx可能使用不同的用户运行worker process,可能为www-data,nginx,nobody中的一个,故需要自己运行下述命令查找nginx: worker process所属用户: 上述命令输出第二行第一列即为nginx: worker process所属用户,然后根据实际情况,运行下面三个命令之一: 运行下面两条命令,第一条命令新建一个文件夹/var/www/acme-challenge用于给 acme.sh 存放域名验证文件。第二条命令将证书文件夹所有者改为acme,使得用户acme有权限写入文件,同时当验证的时候Nginx可以读取该文件。 分别执行如下命令,注意看是否报错。第一条命令切换到用户acme。第二条命令安装acme.sh。第三条命令退出当前用户。第四条命令再次切换到用户acme。注意到这里两次切换用户的操作不能省略,因为安装完acme.sh之后要重新登录当前用户,否则无法识别出acme.sh命令。 执行如下命令(注意域名<tdom.ml>改为你自己的域名),等待一会儿。 看到下图的提示表示证书申请成功。 执行如下命令(注意域名<tdom.ml>改为你自己的域名),第一条命令使用acme.sh将证书安装到certfiles目录,这样acme.sh更新证书的时候会自动将新的证书安装到这里。第二条命令是配置acme.sh自动更新和自动更新证书,这样配置完Trojan之后一般不用管服务器。 最后还要允许组内用户访问证书。可通过如下命令实现。第一条命令将证书文件夹所在用户组改为certusers。第二条命令是赋予证书文件夹组内用户读取权限。运行这两条命令之后用户trojan就有权限读取证书了。第三条命令退出用户acme,因为证书已经安装完成。 分别执行如下四个命令,注意看是否报错。第一个命令是安装Trojan,安装完成一般会提示版本号注意看是否是最新版本。第二个命令是将Trojan配置文件的所有者修改为用户trojan,由于使用sudo安装的Trojan,该配置文件默认是属于root用户的,而我们需要使用用户trojan运行Trojan,不修改所有者会导致启动Trojan遇到权限问题。第三个命令备份Trojan配置文件,以防万一。第四个命令是使用nano修改配置文件。 第四个命令执行完之后屏幕会显示Trojan的配置文件,定位到password、cert和key并修改。密码按自己喜好,cert和key分别改为/etc/letsencrypt/live/certificate.crt和/etc/letsencrypt/live/private.key。编辑完成配置文件之后按屏幕下方快捷键提示(O和X即:Ctrl+O和Ctrl+X)保存并退出nano。修改之后的config文件如图所示。另外,如果有IPv6地址,将local_addr的0.0.0.0改为::才可以使用。 执行如下命令,打开trojan.service文件,并将用户修改为trojan。 添加用户效果如图所示,注意等号旁边没有空格。 然后重新加载配置文件。 执行如下命令,赋予Trojan监听1024以下端口的能力,使得Trojan可以监听到443端口。这是由于我们使用非root用户启动Trojan,但是Linux默认不允许非root用户启动的进程监听1024以下的端口,除非为每一个二进制文件显式声明。 Trojan启动、查看状态命令分别如下,第一条是启动Trojan,第二条是查看Trojan运行状态。启动之后再查看一下状态,Trojan显示active (running)即表示正常启动了。如果出现fatal: config.json(n): invalid code sequence错误,那么是你的配置文件第n行有错误,请检查。如果启动失败,还可以用journalctl -f -u trojan查看systemd的日志。 虽然开机自启一般用不着,除非vultr机房停电,但是反正也没什么代价,弄一下吧。 到这里服务器就配置完成了。此时你可以在浏览器里面访问你的网站看是否能够访问,如果你的网站可以访问了,那么就一切正常啦。 另外,基于以上考虑到的可能的恶意探测,可以验证一下以下情况是否正常。 当acme.sh重新安装证书之后,需要通知Trojan重新加载证书。最简单的方案是每三个月登录服务器重启Trojan,但是不够完美,毕竟重启的时候会导致服务中断。其实Trojan有实现 reload certificate and private key 功能,只需要在证书更新后给Trojan发送 SIGUSR1 消息即可。Trojan收到 SIGUSR1 消息后便会自动加载新的证书和密钥文件,这样就不用重启Trojan了。手动给Trojan发送 SIGUSR1 消息的命令是 sudo -u trojan killall -s SIGUSR1 trojan ,但是这样也不够完美,也得每三个月登录服务器运行一次该命令。其实我们可以给用户 trojan 添加定时任务,使其每个月运行一次该命令即可。实现如下。 首先,编辑用户 trojan 的crontab文件 在文件末尾添加一行如下,该行表示每个月1号的时候运行命令killall -s SIGUSR1 trojan,由于是使用用户trojan运行的,故不需要在前面加sudo -u trojan。 最后查看crontab是否生效。

木马Trojan这个单词怎么读?

瞧尽

怎么彻底删除trojan这个木马病毒

楼主你好,可以安装使用腾讯电脑管家健康小助手功能,贴心关爱每一秒;全新三核引擎查杀顽固木马,能力全面升级;3G无线上网流量统计,清晰展现3G流量耗费情况;网页防火墙能力增强,支持保护非IE内核浏览器新增软件小管家,集中管理电脑上的各项程序;软件支持按照时间、热度、评分排序方式;软件仓库新增图标展示,优化用户体验。

TROJAN是什么病毒?

TROJAN是木马的意思

Trojan是什么病毒呀?

Trojan的意思是木马 就是所有木马病毒的总称 不知道你中的是哪个家伙~~~~~~~

Trojan 是什么病毒有什么危害

用瑞星就能杀,我也中过这病毒/

trojan/ win32是什么病毒?

Trojan/Win32是特洛伊微软系统32位木马病毒,是一种带有rootkit功能的特洛伊病毒,能够修改系统的winlogon.exe文件。黑客用Trojan/Win32来盗取其他用户的个人信息,甚至是远程控制对方的计算机而加壳制作,然后通过各种手段传播或者骗取目标用户执行该程序,以达到盗取密码等各种数据资料等目的。与病毒相似,木马程序有很强的隐秘性,随操作系统启动而启动。2009年1月7日,64-bit的Windows 7 Beta(组建7000)被泄漏到网络上,并在不少的torrent文件中附带了特洛伊木马病毒。扩展资料Trojan/Win32是特洛伊木马病毒的特征特洛伊木马不经计算机用户准许就可获得计算机的使用权。程序容量十分轻小,运行时不会浪费太多资源,因此没有使用杀毒软件是难以发觉的;运行时很难阻止它的行动,运行后,立刻自动登录在系统引导区。之后每次在Windows加载时自动运行;或立刻自动变更文件名,甚至隐形;或马上自动复制到其他文件夹中,运行连用户本身都无法运行的动作;或浏览器自动连往奇怪或特定的网页。参考资料来源:百度百科—Trojan.Win32参考资料来源:百度百科—特洛伊病毒Win32.Cutwail.GI

trojantrojan-go区别

题主是否想询问“trojan和trojan-go的区别”trojan和trojan-go的区别是编程语言不同、运行效率不同、传输协议不同。1、编程语言不同:Trojan是基于C++编写的,而Trojan-go是基于Go语言编写的。2、运行效率不同:Trojan-go相比Trojan有更快的速度和更低的系统资源占用率,因为Go语言编写的程序在性能上比C++更优秀。3、传输协议不同:Trojan使用Socks5代理传输协议,而Trojan-go使用mKCP/UDP传输协议,这意味着Trojan-go可以更好地应对网络阻塞和干扰。

Trojan是什么病毒?

你好!很高兴为你解答问题。Trojan是木马文件的意思,属于盗号类的程序顽固木马很难清除,如果不使用强力的杀毒软件很难拯救系统。推荐你使用腾讯电脑管家8.9,在联网条件下进行全盘查杀,开启小红伞引擎可加强查杀效果。如果还是无法清除,问题依旧,那么你需要找到管家主界面右下方的工具箱—顽固木马专杀,它可以针对极度顽固的木马进行强力查杀。如果我的回答对你的问题有帮助,请采纳,谢谢!

trojan节点安全吗

安全。Trojan协议是通过TLS协议(安全传输层协议)伪装成访问HTTPS(超文本传输协议)的正常流量,因为TLS是一个完整的加密协议,通过目前的任何技术手段都无法得到其加密内容,因此,Trojan节点的安全性很高。Trojan一般指木马病毒,是计算机黑客用于远程控制计算机的程序,将控制程序寄生于被控制的计算机系统中,里应外合,对被感染木马病毒的计算机实施操作。

华硕路由器添加trojan

的性存在,但并不是所有的华硕路由器都会被添加trojan。您发现自己的华硕路由器被添加了trojan,可以尝试通过升级固件或者重置路由器来解决问题。Trojan是指一种木马病毒,它能够通过网络远程控制受它感染的计算机,从而获取用户的敏感信息。华硕路由器作为一个网络设备,被添加了trojan,那么就会造成用户数据泄露的风险。据报道,一些华硕路由器的固件被篡改,添加了trojan,从而导致用户数据泄露。但是,不是所有的华硕路由器都会被添加trojan,这取决于路由器的型号和固件版本。您发现自己的华硕路由器被添加了trojan,可以尝试通过升级固件或者重置路由器来解决问题。升级固件可以更新系统补丁,修复漏洞,提高系统安全性;重置路由器则可以清除所有的设置,还原到出厂设置状态,从而消除存在的安全隐患。除了华硕路由器,其他品牌的路由器也会被添加trojan。因此,为了保护自己的网络安全,用户应该定期升级路由器的固件,安装杀毒软件,设置强密码等措施,提高自身的网络安全意识。

TROJAN是什么意思?

特洛依...木马

trojan是什么意思

木马Trojan [简明英汉词典][5trEudVEn]n.特洛伊

Java编程 从扑克牌里选4张,然后计算它们的和,程序显示和为24的选牌次数,请大神帮看下我代码的问题

主要出现在最后一层循环中,r1,r2,r3和r4都已经是固定值了,不随着k的变化,所以它们的和要么全为24,要么全不为24,最终导致count的值为0或13

jayjun vita snow essence翻译

jayjun vita snow essence翻译成中文意思是:雪地维塔雪精

Becky Jane Taylor的《Prayer》 歌词

歌曲名:Prayer歌手:Becky Jane Taylor专辑:By Your Sidepray作词:AlAi作曲:アッチョリケ编曲:景家淳歌:ネリネ(永见はるか)苍く澄んだあの空にはいくつもの音色 重なる聴こえますか? 一つ一つ思い出をそっと数える深い祈り 远く彼方风を越えて高く响き渡るいつの日にか时を越えて届く――その胸にそれは梦と空が奏でるメロディ心饰る宝石のようにそしていつか気付いて欲しいあなただけの命の形はほら その手の中苍く光るこの星にはいくつもの愿い 揺らめく深い祈り 远く彼方空に云に全て溶け合うようにいつの日にかありのままに届く――信じてるそれは星を照らす祈りのメロディ心映す镜のようにそしていつか気付いて欲しいあなただけの命の形はほら その手の中それは梦と空が奏でるメロディ心饰る宝石のように星を照らす祈りのメロディ心映す镜のようにそしていつか気付いて欲しいあなただけの命の形はほら その手の中---LOGOZ编集(品质の保证)---http://music.baidu.com/song/2556544

如何生成java dump文件

java dump heap 是分配给实例类和数组对象运行数据区,所有java线程在运行期间共享heap中的数据。Java heap dump相当于java应用在运行的时候在某个时间点上打了个快照(snapshot)。有java dump文件生成的方式如下:1.使用$JAVA_HOME/bin/jmap -dump来触发,eg:jmap -dump:format=b,file=/home/longhao/heamdump.out2.使用$JAVA_HOME/bin/jcosole中的MBean,到MBean>com.sun.management>HotSpotDiagnostic>操作>dumpHeap中,点击 dumpHeap按钮。生成的dump文件在java应用的根目录下面。3.在应用启动时配置相关的参数 -XX:+HeapDumpOnOutOfMemoryError,当应用抛出OutOfMemoryError时生成dump文件。4.使用hprof。启动虚拟机加入-Xrunhprof:head=site,会生成java.hprof.txt文件。该配置会导致jvm运行非常的慢,不适合生产环境。

JACOB和Jawin有没有适用于64位系统的jar和dll

jcob的原理是通过一个接口来操作word的activex对象。现在的版本是1.9。首先:把jcob.dll拷贝到system32目录下。其次:把jcob.jar的路径放置在classpath目录下。最后:编写访问类。至于jar包和dll文件去csdn搜下有好多的。

JAVA调用SAP报错信息,各位帮忙看看什么原因

JAVA调用SAP报错叫做JCo二次部署异常。 JCo的原理是通过加载本地驱动实现的,因此在web项目里面在不重启server的情况下是无法重复加载sapjco3.dll驱动的,由于JCo是通过JNI实现的,即加载sapjco3.dll实现Java与SAP的通信,而JNI加载的class没办法被classloader卸载导致不能重复将sapjco3.dll加到web容器(resin)的lib中,而将项目的WEB-INFlib去掉,

java.util.HashMap cannot be cast to com.sap.conn.jco.JCoTable

用JCO.createTable,构造函数是不可见的。

import com.sap.mw.jco.jco;引用哪个jar

先告诉人家,你用的是JCO3.0技术、还是JCO2.0技术,如果是JCO 3.0技术的话,如果你是开发WEB项目的话,那就只需要把【sapjco3.dll】这个文件放在WEB-INF/lib目录下就行了,如果不是WEB项目,那就把【sapjco3.dll】这个文件放在C:WINDOWSsystem...

JAVA怎么才能调用SAP的函数?谢谢

JCoDestination destination = rfcSource.getDestination(); JCoFunction function = destination.getRepository().getFunction(funcName); JCoParameterList paramStrlist = function.getImportParameterList(); JCoParameterList paramTableList = function.getTableParameterList(); List<String> paramList = getParamList(); for (String param : paramList) { int index = param.indexOf(":{"); if(index >= 0){ String type = param.substring(0,index); if(type.toLowerCase().equals("strings")){ String typeValues = param.substring(index + 2,param.length() - 1); String[] paramArray = typeValues.split("[|]"); for (String pa : paramArray) { paramStrlist.setValue(pa, paramMap.get(pa)); } }else if(type.toLowerCase().equals("tables")){ String typeValues = param.substring(index + 2,param.length() - 1); String[] paramArray = typeValues.split("[;]"); for (String pa : paramArray) { int tabIndex = pa.indexOf(":"); if(tabIndex >= 0){ String tableName = pa.substring(0,tabIndex); String tableFields = pa.substring(tabIndex +1); // String[] tfArray = tableFields.split("[|]"); paramTableList.getTable(tableName).appendRow(); for (String tf: tfArray) { paramTableList.getTable(tableName).setValue(tf, paramMap.get(tableName+ "." + tf)); } } paramTableList.set } } } } function.execute(destination); String queryString = getQryString(); String rfcName = queryString.substring(0, queryString.indexOf(",")); String rfcParam = queryString.substring(rfcName.length() + 1); final String[] returnType = { "TABLES", "STRUCTURES", "STRINGS" }; //SAP输出类型格式

abap调用java

高级。。。

SAP JCO JAVA程序通过RFC远程连接SAP RFC函数,在JSP页面显示的代码教一下

JSP页面很简单的,就是HTML基础页面+java的特定代码和格式。你如果是只要显示的代码的话,还不如自己去找个JSP入门基础教程简单看看,自己改代码

做Java的进SAP中国需要哪些技术?

SAP现在在弃JAVA化,不知你所看到的具体是什么职位. JAVA只是工具,进来之后以项目为中心. 根据项目需要可能要学习新的语言.

寻SAP Java Connector (SAP JCo)软件下载

http://www.itpub.net/388673.html

怎么使用java读取sap的MM模块中的订单信息?

可以用JCO,SAP这边最好有个ABAPer写个RFCfunctionmodule来让你调用,你提供一些查询条件,SAP给你返回结果,ABAPer需要在事务SM59设置相关连接查看原帖>>

怎么把java代码变成abap

如果需要ABAP程序与JAVA程序间调用, 可以采用SAP提供的SAP Java Connector. 它支持ABAP,JAVA之间的双向调用, 譬如在webdynpro for java里调用BAPI时, 可以使用JCO来实现调用RFM, 在SAP WAS JAVA与WAS ABAP之间交互也是基于JCo实现的JCo基于SAP RFC协议,当从JAVA端调用ABAP端提供的服务时, 需要提供一个可以远程调用的Function module即可. 当从ABAP端调用JAVA提供的服务时, 需要JAVA先将服务注册到SAP Gateway, 然后建立一个类型为T的RFC Destination , 并且在ABAP服务器端需要实现一个输入输出参数跟JAVA提供服务相同的function module, 调用时跟调用一般的RFM没什么区别.另外,关于调试, 如果是在JAVA端调用ABAP的FM, 需要调试ABAP代码, 可以在FM里相应的代码行里建立extenal breakpoint. 而如果在ABAP端调用JAVA程序, 需要调试JAVA代码,可以将JAVA程序运行在调试模式, 然后从ABAP端运行即可. 注意,需要在开发PC上同时安装SAP GUI与Java IDE.JCo 下载: http://service.sap.com/connectors java connector , 下载包里有详细安装文档与使用示例.

java程序无法远程调用sap函数

你的远程调用是基于rmi的么?

谁知道UK、USA、Australia 、Canada 、France 、Italy 、New Zealand 、Japan的首都的英文拼写?

LondonWashington CanberraOttawaParisRomeWelingtonTokyo

Java学习路线是怎样的?

Java 学习之路学习了Java SE,还只是完成“万里长征”的第一步。接下来选择学习Java EE或是Java ME(或者你还想不断深入学习Java SE,只要你喜欢,你可以一直深入下去,另外还有Java ME);估计选择Java EE方面的学习者会多一些,Java EE所涉及技术非常多,考虑到初学者的接受程度,我会尽量从最常用的角度来介绍。学习Java EE,在开发环境上不建议再用文本编辑器,我感觉Eclipse很适合初学者,也有人喜欢NetBeans,如果你喜欢用别的IDE,都没问题,看自己喜欢吧。1)学习JSP/Servlet在Java EE中,首先要学习JSP/Servlet(结合Tomcat、MySQL)技术,建议JSP1.2/2.X的知识都要掌握,毕竟现在很多的在用系统都还是基于JSP,学习JSP,还必须掌握一些外延技术。如:你还得掌握HTML基础知识,最好再掌握些JavaScript(目前正火的AJAX技术之一)、CSS3的技术,而了解XML是必不可少的(至少描述性配置信息是通过XML来描述的)。在学习JSP/Servlet过程中,应该结合学习 JDBC、数据库开发技术,毕竟绝大多数Java Web项目都是和数据库紧密结合的。2)学习数据库开发技术这里我想重点说一下数据库开发技术,数据库技术是做业务系统必备技能,Java Web开发人员最低程度都应该掌握SQL语句的使用!数据库技术大体可分为DBA技术和数据库开发技术,对于开发而言,应侧重数据库开发技术,而数据库基本操作,也是要掌握的。常用数据库有DB2、Oracle、SQL Server、MySQL等,你可以结合实际需要,选择一种数据库,并花大力气掌握其开发技术。记住,学习数据库开发技术和学习Java EE,是相对独立的,你可以在学习JSP/Servlet的同时,学习数据库开发技术(如SQL语句等),或者先学数据库开发技术,之后再学习JSP/Servlet。3)学习Java EE其它开发技术再往后,可以学习一些EJB的知识。在学习EJB过程中,应同时掌握一种企业级应用服务器的使用(如 WebSphere、Weblogic、Sun Applcation Server或JBOSS等,目前Sun Applcation Server 9.X和JBOSS都可支持EJB 3.0)。之后的学习中,再逐渐扩展到其他Java EE技术。五、之后等你对Java EE有些感悟的时候,你自然就会想不断扩展你的知识面,这时候你可以学习Spring、Hibernate,以及各种Web框架(如Struts、JSF、Webwork或是Tapestry等)。随着技术、经验的不断积累,你会逐步关注分析、设计等更高层次的知识,这时候,你可进一步学习相关的UML、模式等知识(积累了一定经验,你就可以安排自己学习这些知识了)。

java三大框架要学多久 怎么学

Java是世界第一编程语言,这已经达成共识,是毋庸置疑的真理。框架是程序员们必学的知识点,而且是十分重要的应用,Spring、Struts、Hibernate也是经典中的经典,最常用的框架类型。一般需要两周熟悉各个框架的作用和使用方法,三周达到会用的阶段。 java三大框架各自作用是什么 struts主要负责表示层的显示,spring利用它的IOC和AOP来处理控制业务(负责对数据库的操作),hibernate主要作用是数据的持久化到数据库。 在学习ssh的时候不了解这个,学习起来就比较困难。ssh这三个框架,单独使用是比较简单的。主要是他们的综合时候。一般Spring放到最后,这个比其他两个要难一些。只有struts和hibernate,先学习那个都可以。 Spring提供了管理业务对象的一致方法并且鼓励了注入对接口编程而不是对类编程的良好习惯。 Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得java程序员可以随心所欲的使用对象编程思维来操纵数据库。 Struts把Servlet、JSP、自定义标签和信息资源(message esources)整合到一个统一的框架中,开发人员利用其进行开发时不用再自己编码实现全套MVC模式,极大的节省了时间,所以说Struts是一个非常不错的应用框架。 java三大框架怎么学 要想学习好三大框架,快速掌握,最好的方法无疑是理论与实践结合,由简入繁,由单一到全部,逐一攻克,具体学习步骤如下: 1、先学习struts,struts是世界上第一个经典的mvc框架,其作用就是将业务逻辑与视图分离开来,使得项目层次分明,清晰,更具有结构性。 2、struts掌握了后,接着学习spring,spring就是一个大的工厂,其轻量理强大,它改变了传统的编程模式,将实例化bean交给了容器管理,使得项目中类的耦合度大为降低。要想学习好spring,就要先掌握相应的理论知识点,然后就是动手敲代码,将它的每一个特性都实现一遍,功力到了,自然就掌握了。 3、掌握了以上两大框架之后,可以继续深入学习hibernate框架了。学习好hibernate,首先要掌握其原理,映射配置,然后就是对其每一个特性进行编码验证,如一对一,一对多,多对多关系映射等。可以不结合项目,只要能连上数据库进行相应操作即可。 4、三大框架都初步掌握了后,就可以进行整合学习了。三大框架在整合分工也很明确,也是一个经典的MVC框架,其中struts充于其中的V(即视图层),spring充当C(即业务控制层),hibernate充当M(持久层)。整合学习三大框架的难点在于其中的配置,依赖及管理,这非一两天能完成的事情,得要多查阅相关书籍交资料,动手实践,用心体验。

Jackson 5的《Medley》 歌词

歌曲名:Medley歌手:Jackson 5专辑:In Japan!爱你我管不了是祸未想过是为何能爱着你苦也未去躲有着我便有着你真爱是永不死穿过喜和悲跨过生和死see me flyi am singing in the sky假使我算神话因你创更愉快凭我彻底的勇气爱是最大权利不理场面不伟大我共你始终同游生死还有哪一种结尾花光一切在乎你没有想过太多我只需要你恋爱大过天想不想也日夜怀念连甜梦也不够甜怎么闪同学始终会遇见shall we talkshall we talk就当重新手拖手去上学堂我带着情意一丝丝凄怆许多说话都仍然未讲纵隔别遥远怀念对方悲伤盼换上再会祈望越问越伤心明明无余地再过问明明知道衷心一吻会有更亲厚质感我说过要你快乐让我担当失恋的主角改写了剧情无言地飘泊我想哭你可不可以暂时别要睡陪着我像最初相识我当时未怕累但如果但如果说下去或者我有说话未曾讲你这刹那在何方如何能联系上与你再相伴在旁如晨光太阳星辰即使变灰暗心中记忆一生照我心我的爱如潮水爱如潮水将我向你推紧紧跟随爱如潮水她将你我包围冷冷雨 wo...没焦点因找不到你冷冷雨低泣彷佛要等你经过答应我你从此不在深夜里徘徊不要轻易尝试放纵的滋味你可知道这样会让我心碎风继续吹不忍远离心里亦有泪不愿流泪望着你各种空虚冷冷冷吹起吹起风里梦过去的心火般灼热今天已变了冰冻来又如风离又如风或世事通通不过是场梦人在途中人在时空相识也许不过擦过梦中就算你壮阔胸膛不敌天气两鬓斑白都可认得你别离没有对错要走也解释不多现代说永远已经很傻随着那一宵去火花以消逝不可能付出一生那么多也许相爱很难就难在其实双方各有各寄望怎么办要单恋都难受太大的礼会内疚却也无力归还darling i want you你竟不知默默向风呆企去等心中戏子曾无限次欲话我知却也停止同是天涯沦落人在这伤心者通道上同行也许不必知道我是谁无谓令你令你令你令你令你令你令你令你令你令你令你令你令你令你令你令你令你如何可以不爱她莫非生命只配有一个他到了没法相处再去记它好处凭回忆制造这自欺的笑话随时日在远飞难舍弃每次看见冷冬到访的你那年冬天两心遇上没逃避可以笑的话不会哭可相知的心哪怕追逐可惜每次遇上热爱无法使我感觉我终于遇上幸福来忘掉错对来怀念过去曾共渡患难日子总有乐趣不相信会绝望不感觉到踌躇在美梦里竞争每日拼命进取世界将我包围誓死都一齐壮观得有如悬崖的婚礼也许生于世上无重要作为仍有这种真爱会留低祈求天地放过一双恋人怕发生的永远别发生从来未顺利遇上好景降临如何能重拾信心神啊救救我吧一把年纪了一个爱人都没有孤独是可怜的如果没爱我人生是黑白的僧人都不喜爱我神你不欢喜我迫我入了魔爱侣几百万谁料我蠢得竟可重覆去犯错吻下来豁出去这吻别似覆水再来也许要天上团聚眼泪还是留给天抚慰你是前度何必听我吠别再做情人做只猫做只狗不做情人做只宠物至少可爱迷人和你不瞅不睬最终只会成为敌人好心一早放开我好心一早放开我从头努力也坎坷通通不要好过来年岁月那么多为继续而继续没有好处还是我若注定有一点苦楚不如自己亲手割破谁得到过愿放手曾精彩过愿挽留年年月月逝去越是觉得深爱你http://music.baidu.com/song/500898

jay 周杰伦 medley cover by b.e.c 的歌词(带歌名标注的)

http://www.tudou.com/programs/view/w1ZQaiYxjKo/

vbscript改成javascript

以前用过相信还是有点基础的,硬着头皮啃吧,相信你能行的。

谁能讲解一下javascript和vbscript如何用?以及它们的区别?

javascript用于客户端,而vbscript用于服务器端这句话只是常规的说法。javascript客户端只是指包含在html页面中的脚本类型一般为javascript.但是用vbscript,ecmascript等其它脚本语言也是可以编写客户端脚本的.vbscript用于服务器端指的是用vbscript编写的asp页面.asp在这里指active Server page 动态页面的意思。它的功能就是在服务器端运行指令,并将结果输出到客户端.vbscript只是asp常用的语言,用javascript或jscript等其它语言其实也可以编写asp页面,只是不常用罢了.下面给你个页面例子:==============asp页面===============<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%><html><head><title>简单asp提交</title><meta http-equiv="Content-Type" content="text/html; charset=gb2312"></head><body><%Response.Write(Request.form("txt"))%><form name="tst" method="post" onsubmit="return ck(this)"><textarea name="txt" style="width:500px;height:200px"></textarea><input type="submit" value="提交" /></form><script type="text/javascript">function ck(f){if(f.txt.value==""){alert("请输入些内容再提交")return false}}</script></html>以上是asp文件内你看到的内容,当用户访问它的时候,它将由iis解析,并返回标准html给浏览器.返回给浏览器的页面代码可能像下面这样<html><head><title>简单asp提交</title><meta http-equiv="Content-Type" content="text/html; charset=gb2312"></head><body><form name="tst" method="post" onsubmit="return ck(this)"><textarea name="txt" style="width:500px;height:200px"></textarea><input type="submit" value="提交" /></form><script type="text/javascript">function ck(f){if(f.txt.value==""){alert("请输入些内容再提交")return false}}</script></html>在这里<%%>这里面的内容默认为<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>这里声明的语言和编码.这里是vbscript,简体中文服务器会运行<%%>内的代码,并输出结果插入到相应位置,最终返回给浏览器的代码已经不再包含<%%>了<%%>这种标签只是常规写法,当然也可以写<script language="vbscript" runat="server">表示在服务器端运行的脚本如果你在以上测试页面的文字框里没有输入东西就点击提交,页面不会提交,并弹出一个对话框,这个验证动作就是由javascript客户端完成的,当你输入内容后,验证通过,表单也就提交了。<%Response.Write(Request.form("txt"))%>这一句会把你提交的内容输出到页面上.浏览器所接收的页面内容也就和刚开始的有些变化了.这就是动态页面的特点

asp和asp.net有什么区别?vbscript和javascript有什么区别?

一、ASP : Active Server Page的缩写,意为动态服务器页面。ASP是一种运行环境,这在种环境中运行 VBScript 脚本。 VBScript脚本一种面向过程的脚本语言。二、ASP.NET 是 ASP的升级版本,在这种环境中(.Net Framework)运行的是面向对象的语言,比如:C-Sharp(C#), J-Sharp(J#),VB.NET。。。等等三、Javascript : 是一种专门针对网页的,基于对象的客户端语言,比如很多网页中鼠标跟随,图片滚动等效果都是 Javascript 写的。四、VBScript : 同样可以象 Javascript 一样运行在网页的客户端,而且还可以运行在 Windows 系统中(早时的欢乐时光病毒就是VBScript开发的)。在网页中的效果和 Javascript 一样,但是比 Javascript 强大,这种语言的最大缺点是只能运行在微软的产品中,比如 IE。其他非微软的系统或浏览器产品中很少有运行该脚本的环境。这要根据你的喜好来说,我本人就是.net 的这个方便,快速,

谁能把VBScript代码转换成JavaScript

分类: 电脑/网络 >> 程序设计 >> 其他编程语言 问题描述: <script language="VBScript" type=text/vbscript> function menuover(id,color) dim i for i=0 to 5document.all("menu"&i)(0).bgcolor="#E3E4EE" "" document.all("menu"&i)(0).background="images/b.gif" document.all("menu"&i)(1).style.display="none" next "" menu0(0).bgcolor=color "" menu0(1).style.display="none" document.all(id)(0).bgcolor=color "" document.all(id)(0).background=color document.all(id)(1).style.display="" end function </script> 解析: <script language="JScript"> function menuover(id,color){ var i; for(i=0;i<=5;i++){ document.all["menu"+i][0].bgcolor="#E3E4EE"; document.all["menu"+i][0].background="images/b.gif"; document.all["menu"+i][1].style.display="none"; } menu0[0].bgcolor=color; menu0[1].style.display="none"; document.all[id][0].bgcolor=color; document.all[id][0].background=color; document.all[id][1].style.display=""; } </script> 调用那里: onClick="menuover("menu0","#A8C6A8")" 不学JS,就不能成为一名真正的WEB程序员。

vbscript与javascript有什么异同点??

大致功能差不多,但ie能通吃这两种其他浏览器有可能吃javascript而吃不下vbscript

ASP javascript和ASP VBscript 和ASP.NET这些都有什么区别?

javascript ,vbscript 这两个是客户端语言asp , asp.net 是服务器端语言。

vbscript和JavaScript的区别

就学javascript 现在的主流

正迷茫于学vbscript 好还是学javascript好? 哪个功能强悍?哪个流行广?

java流行广,vb功能好点

vbscript与javascript有什么异同点?

不同点:x0dx0a第一、他们应用的侧重点不同。vbscript侧重用在服务器端,而javascript着重用于浏览器端x0dx0a第二、在编写asp网页时,vbscript是微软的默认脚本语言,而后者则要另加陈述了x0dx0a第三、两个语言里的代码、语法规则不尽相同,javascript有点像java但又不是java一个子集,它和java是有很大区别的。x0dx0a相同点:x0dx0a第一、都可用作脚本语言不管是服务器端的还是浏览器的,只是我们习惯上用他们的侧重点不同。x0dx0a第二、都属于编程语言,其难易程度介于自然语言和c、java等高级语言之间,学起来都是很容易的x0dx0a我就知道这么多,还有很多不知道的请见谅

ajax怎么实现图片的预览上传以及查看缩略图

这次给大家带来ajax怎么实现图片的预览上传以及查看缩略图,ajax实现图片的预览上传以及查看缩略图的注意事项有哪些,下面就是实战案例,一起来看一下。要实现功能,上传图片时可以预览,因还有别的文字,所以并不只上传图片,实现与别的文字一起保存,当然上来先上传图片,然后把路径和别的文字一起写入数据库;同时为图片生成缩略图,现只写上传图片方法,文字在ajax里直接传参数就可以了,若要上传多图,修改一下就可以了。借鉴了网上资料,自己写了一下,并不需要再新加页面,只在一个页面里就OK啦。JS代码://ajax保存数据,后台方法里实现此方法 function SaveData() { filename = document.getElementById("idFile").value; result =test_test_aspx.SaveData(filename).value; if (result) { alert("保存成功!"); } return false; } //实现预览功能 function DrawImage(ImgD) { var preW = 118; var preH = 118; var image = new Image(); image.src = ImgD.src; if (image.width > 0 && image.height > 0) { flag = true; if (image.width / image.height >= preW/ preH) { if (image.width > preW) { ImgD.width = preW; ImgD.height = (image.height * preW) / image.width; } else { ImgD.width = image.width; ImgD.height = image.height; } ImgD.alt = image.width + "x" + image.height; } else { if (image.height > preH) { ImgD.height = preH; ImgD.width = (image.width * preH) / image.height; } else { ImgD.width = image.width; ImgD.height = image.height; } ImgD.alt = image.width + "x" + image.height; } } } //当idFile内容改变时 function FileChange(Value) { flag = false; document.getElementById("showImg").style.display = "none"; document.getElementById("idImg").width = 10; document.getElementById("idImg").height = 10; document.getElementById("idImg").alt = ""; document.getElementById("idImg").src = Value; }以下为前台代码:<p class="cbs"> <p class="l"><label>图片:</label></p> <p> <input id="idFile" name="pic" type="file" runat="server" onchange="FileChange(this.value);" /> </p> </p> <p class="cbs"> <p class="l"><label>预览:</label></p> <p> <img id="idImg" height="0" width="0" src="" alt="" onload="DrawImage(this);" /> //实现预览 <img id="showImg" width="118" height="118" alt="" runat="server" style="display:none"/> //加这个主要是为了实现查看时显示图片,因为上面的(idImg)加上runat="server"报错,如有好的方法可以留言 </p> </p>以下为AJAX方法:[Ajax.AjaxMethod()] public bool SaveData(string fileNamePath) { string serverFileName = ""; string sThumbFile = ""; string sSavePath = "~/Files/"; int intThumbWidth = 118; int intThumbHeight = 118; string sThumbExtension = "thumb_"; try { //获取要保存的文件信息 FileInfo file = new FileInfo(fileNamePath); //获得文件扩展名 string fileNameExt = file.Extension; //验证合法的文件 if (CheckFileExt(fileNameExt)) { //生成将要保存的随机文件名 string fileName = GetFileName() + fileNameExt; //检查保存的路径 是否有/结尾 if (sSavePath.EndsWith("/") == false) sSavePath = sSavePath + "/"; //按日期归类保存 string datePath = DateTime.Now.ToString("yyyyMM") + "/" + DateTime.Now.ToString("dd") + "/"; if (true) { sSavePath += datePath; } //获得要保存的文件路径 serverFileName = sSavePath + fileName; //物理完整路径 string toFileFullPath = HttpContext.Current.Server.MapPath(sSavePath); //检查是否有该路径 没有就创建 if (!Directory.Exists(toFileFullPath)) { Directory.CreateDirectory(toFileFullPath); } //将要保存的完整文件名 string toFile = toFileFullPath + fileName; ///创建WebClient实例 WebClient myWebClient = new WebClient(); //设定windows网络安全认证 myWebClient.Credentials = CredentialCache.DefaultCredentials; //要上传的文件 FileStream fs = new FileStream(fileNamePath, FileMode.Open, FileAccess.Read); //FileStream fs = OpenFile(); BinaryReader r = new BinaryReader(fs); //使用UploadFile方法可以用下面的格式 //myWebClient.UploadFile(toFile, "PUT",fileNamePath); byte[] postArray = r.ReadBytes((int)fs.Length); Stream postStream = myWebClient.OpenWrite(toFile, "PUT"); if (postStream.CanWrite) { postStream.Write(postArray, 0, postArray.Length); } postStream.Close(); //以上为原图 try { //原图加载 using (System.Drawing.Image sourceImage = System.Drawing.Image.FromFile(System.Web.HttpContext.Current.Server.MapPath(serverFileName))) { //原图宽度和高度 int width = sourceImage.Width; int height = sourceImage.Height; int smallWidth; int smallHeight; //获取第一张绘制图的大小,(比较 原图的宽/缩略图的宽 和 原图的高/缩略图的高) if (((decimal)width) / height <= ((decimal)intThumbWidth) / intThumbHeight) { smallWidth = intThumbWidth; smallHeight = intThumbWidth * height / width; } else { smallWidth = intThumbHeight * width / height; smallHeight = intThumbHeight; } //判断缩略图在当前文件夹下是否同名称文件存在 int file_append = 0; sThumbFile = sThumbExtension + System.IO.Path.GetFileNameWithoutExtension(fileName) + fileNameExt; while (System.IO.File.Exists(System.Web.HttpContext.Current.Server.MapPath(sSavePath + sThumbFile))) { file_append++; sThumbFile = sThumbExtension + System.IO.Path.GetFileNameWithoutExtension(fileName) + file_append.ToString() + fileNameExt; } //缩略图保存的绝对路径 string smallImagePath = System.Web.HttpContext.Current.Server.MapPath(sSavePath) + sThumbFile; //新建一个图板,以最小等比例压缩大小绘制原图 using (System.Drawing.Image bitmap = new System.Drawing.Bitmap(smallWidth, smallHeight)) { //绘制中间图 using (System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(bitmap)) { //高清,平滑 g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High; g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality; g.Clear(Color.Black); g.DrawImage( sourceImage, new System.Drawing.Rectangle(0, 0, smallWidth, smallHeight), new System.Drawing.Rectangle(0, 0, width, height), System.Drawing.GraphicsUnit.Pixel ); } //新建一个图板,以缩略图大小绘制中间图 using (System.Drawing.Image bitmap1 = new System.Drawing.Bitmap(intThumbWidth, intThumbHeight)) { //绘制缩略图 using (System.Drawing.Graphics g = System.Drawing.Graphics.FromImage(bitmap1)) { //高清,平滑 g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High; g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality; g.Clear(Color.Black); int lwidth = (smallWidth - intThumbWidth) / 2; int bheight = (smallHeight - intThumbHeight) / 2; g.DrawImage(bitmap, new Rectangle(0, 0, intThumbWidth, intThumbHeight), lwidth, bheight, intThumbWidth,intThumbHeight, GraphicsUnit.Pixel); g.Dispose(); bitmap1.Save(smallImagePath, System.Drawing.Imaging.ImageFormat.Jpeg); return true; } } } } } catch { //出错则删除 System.IO.File.Delete(System.Web.HttpContext.Current.Server.MapPath(serverFileName)); return false; } } else { return false; } } catch (Exception e) { return false; } } /// <summary> /// 检查是否为合法的上传文件 /// </summary> /// <param name="_fileExt"></param> /// <returns></returns> private bool CheckFileExt(string _fileExt) { string[] allowExt = new string[] { ".gif", ".jpg", ".jpeg" }; for (int i = 0; i < allowExt.Length; i++) { if (allowExt[i] == _fileExt) { return true; } } return false; } //生成随机数文件名 public static string GetFileName() { Random rd = new Random(); StringBuilder serial = new StringBuilder(); serial.Append(DateTime.Now.ToString("yyyyMMddHHmmssff")); serial.Append(rd.Next(0, 999999).ToString()); return serial.ToString(); }相信看了本文案例你已经掌握了方法,更多精彩请关注Gxl网其它相关文章!推荐阅读:ajax怎样提交form表单与实现文件上传Ajax向后台传输json格式数据出现错误应如何处理

ajax的三级联动菜单栏如何实现

这次给大家带来ajax的三级联动菜单栏如何实现,ajax三级联动菜单栏实现的注意事项有哪些,下面就是实战案例,一起来看一下。本文实例为大家分享了ajax三级联动展示的具体代码,供大家参考,具体内容如下1. test.php<script src="../jquery-1.11.2.min.js"></script><script src="sanji.js"></script><title>无标题文档</title></head><body><h1>三级联动</h1><p id="sanji"></p></body></html>2. sanji.js// JavaScript Document$(document).ready(function(e) { //找到ID=SANJI的p,造三个下拉扔进去 $("#sanji").html("<select id="sheng"></select><select id="shi"></select><select id="qu"></select>"); //加载省的数据 LoadSheng(); //加载市的数据 LoadShi(); //加载区的数据 LoadQu(); //给省的下拉加点击事件 $("#sheng").click(function(){ //重新加载市 LoadShi(); //重新加载区 LoadQu(); }) //给市的下拉加点击事件 $("#shi").click(function(){ //重新加载区 LoadQu(); })});//加载省份的方法function LoadSheng(){ //省的父级代号 var pcode = "0001"; $.ajax({ async:false, url:"chuli.php", data:{pcode:pcode}, type:"POST", dataType:"TEXT", success: function(data){ var hang = data.trim().split("|"); var str = ""; for(var i=0;i<hang.length;i++) { var lie = hang[i].split("^"); str = str+"<option value=""+lie[0]+"">"+lie[1]+"</option>"; } $("#sheng").html(str); } });}//加载市的方法function LoadShi(){ //找市的父级代号 var pcode = $("#sheng").val(); $.ajax({ async:false, url:"chuli.php", data:{pcode:pcode}, type:"POST", dataType:"TEXT", success: function(data){ var hang = data.trim().split("|"); var str = ""; for(var i=0;i<hang.length;i++) { var lie = hang[i].split("^"); str = str+"<option value=""+lie[0]+"">"+lie[1]+"</option>"; } $("#shi").html(str); } });}//加载区的方法function LoadQu(){ //找区的父级代号 var pcode = $("#shi").val(); $.ajax({ url:"chuli.php", data:{pcode:pcode}, type:"POST", dataType:"TEXT", success: function(data){ var hang = data.trim().split("|"); var str = ""; for(var i=0;i<hang.length;i++) { var lie = hang[i].split("^"); str = str+"<option value=""+lie[0]+"">"+lie[1]+"</option>"; } $("#qu").html(str); } });}3. chuli.php<?php//给一个父级代号,返回该父级代号下所有的子地区require "DBDA.class.php";$db=new DBDA();$pcode=$_POST["pcode"];$sql="select areacode,areaname from chinastates where parentareacode="{$pcode}"";echo $db->StrQuery($sql);引用的封装类里面返回字符串的方法<?phpclass DBDA{ public $host = "localhost"; public $uid = "root"; public $pwd = "123"; public $dbname = "test_123"; //执行SQL语句返回相应的结果 //$sql 要执行的SQL语句 //$type 代表SQL语句的类型,0代表增删改,1代表查询 function query($sql,$type=0) { $db = new MySQLi($this->host,$this->uid,$this->pwd,$this->dbname); $result = $db->query($sql); if($type) { //如果是查询,显示数据 return $result->fetch_all(); } else { //如果是增删改,返回true或者false return $result; } } //返回字符串的方法 public function strquery($sql,$type=1) { $db = new MySQLi($this->host,$this->uid,$this->pwd,$this->dbname); $result = $db->query($sql); $arr = $result->fetch_all(); $str=""; foreach($arr as $v) { $str = $str.implode("^",$v)."|"; } $str = substr($str,0,strlen($str)-1); return $str; } //返回JSON function JSONQuery($sql,$type=1) { $db = new MySQLi($this->host,$this->uid,$this->pwd,$this->dbname); $r = $db->query($sql); if($type==1) { return json_encode($r->fetch_all(MYSQLI_ASSOC)); } else { return $r; } }}相信看了本文案例你已经掌握了方法,更多精彩请关注Gxl网其它相关文章!推荐阅读:怎样让浏览器记住ajax请求并控制浏览器前进和后退AJAX在不刷新的情况下检测输入的用户名

js里的$.ajax({...})是什么意思

jquery 的ajax 不是单纯的js的ajax

ajax怎样实现不刷新的情况下上传文件

这次给大家带来ajax怎样实现不刷新的情况下上传文件,ajax实现不刷新上传文件的注意事项有哪些,下面就是实战案例,一起来看一下。本文实例为大家分享了ajax实现无刷新上传文件功能的具体代码,供大家参考,具体内容如下详细代码如下<!DOCTYPE HTML><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>ajax无刷新上传文件</title><script>window.onload = function(){ var oBtn = document.getElementById("btn"); var oMyFile = document.getElementById("myFile"); oBtn.onclick = function() { //alert(oMyFile.value); //获取到的是file控件的value值,这个内容是显示给你看的文字,不是我们选择的文件 //oMyFile.files file控件中选择的文件列表对象 //alert(oMyFile.files); //我们是要通过ajax把oMyFile.files[0]数据发送给后端 /* for (var attr in oMyFile.files[0]) { console.log( attr + " : " + oMyFile.files[0][attr] ); } */ //利用ajax发送必须要有一个ajax对象 var xhr = new XMLHttpRequest(); //监听上传事件 xhr.onload = function(){ //alert(1); //alert(this.responseText);//后端返回的数据 var d = JSON.parse(this.responseText); alert(d.msg + " : " + d.url); //显示上传成功 并且显示文件路径 } xhr.open("post","post_file.php",true); //open打开的方式不能使用get,上传文件的地址,使用异步上传 //在使用post发送的时候必须要带一些请求头信息 xhr.setRequestHeader("X-Request-With", "XMLHttpRequest"); //send要发送数据 //将要上传的数据转换成二进制数据 //那么必须知道后端接收当前文件的名称是什么 然后后面带上当前文件的数据 var oFormData = new FormData(); //通过FormData来构建提交数据 oFormData.append("file",oMyFile.files[0]); xhr.send(oFormData); }}</script></head><body> <input type="file" id="myFile" /><input type="button" id="btn" value="上传" /></body></html>后端php代码post_file.php<?phpheader("Content-type:text/html; charset="utf-8"");$upload_dir = "uploads/";if(strtolower($_SERVER["REQUEST_METHOD"]) != "post"){ exit_status(array("code"=>1,"msg"=>"错误提交方式"));}if(array_key_exists("file",$_FILES) && $_FILES["file"]["error"] == 0 ){ $pic = $_FILES["file"]; if(move_uploaded_file($pic["tmp_name"], $upload_dir.$pic["name"])){ exit_status(array("code"=>0,"msg"=>"上传成功","url"=>$upload_dir.$pic["name"])); }}echo $_FILES["file"]["error"];exit_status(array("code"=>1,"msg"=>"出现了一些错误"));function exit_status($str){ echo json_encode($str); exit;}?>相信看了本文案例你已经掌握了方法,更多精彩请关注Gxl网其它相关文章!推荐阅读:用CORS实现WebApi Ajax跨域请求的方法Ajax怎么实现动态加载组合框(附代码)

axios和ajax的区别在哪里?

区别在于ajax技术实现了网页的局部数据刷新,axios实现了对ajax的封装。

JavaScript如何控制Session实现原理及代码

看到这个题目,或许有人会提出疑问,JavaScript代表客户端,而Session代表的是服务器(不知道这样说大家是否能够理解)。 先说一下需求,我在做一个权限管理的时候,需要在点击某个模块时,Session中相应的改变模块代号,而实现这个操作的是一个a标签,当然我不知道 一个linkbutton是否可以同时将跳转页面和修改Session做了,个人感觉应该是可以的,具体能不能,如果有人做了Demo可以留言说明。 a标签,实现页面的跳转,他的onclick事件,执行的也是本页面中的js方法,现在就回到了题目所描述的问题——写一个JavaScript方法,使其修改Session。 其实这个例子不难,但是对我个人的意义却非同寻常,这个例子解除了我一大部分对AJAX的恐惧。 首先,是写一个一般处理程序(也就是服务端代码) 需要说明的是,如果要修改Session,需要额外引入命名空间,和实现一个接口(只需实现,别的什么也不用做) 代码如下:using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.SessionState; namespace TGB.CJX { /// <summary> /// 修改Session /// </summary> public class ModifySession : IHttpHandler,IRequiresSessionState { public void ProcessRequest(HttpContext context) { context.Response.ContentType = "text/plain"; context.Session["modelID"]=context.Request.QueryString["session"].ToString(); //context.Session["modelID"] = "1"; //context.Response.Write(context.Session["modelID"]); } public bool IsReusable { get { return false; } } } } 有没有发现上面实现的功能很简单呢? 下面,是客户端代码 代码如下:var xmlhttp; var session; function submit(obj) { //session = obj.id.substr(1, 1); session = obj.id.replace("model",""); //IE7,IE8,FF,MOZILLA,SAFARI if (window.XMLHttpRequest) { //alert("IE7,IE8,FF,MOZILLA,SAFARI"); xmlhttp = new XMLHttpRequest(); if (xmlhttp.overrideMinmeType) { xmlhttp.overrideMinmeType("text/xml"); } } else if (window.ActiveXObject) { //alert("IE5,IE6"); var activeName = ["MSXML2.XMLHTTP", "Miscrosoft.XMLHTTP"]; for (var i = 0; i < activeName.length; i++) { try { xmlhttp = new ActiveXObject(activeName[i]); break; } catch (e) { return; } } } if (xmlhttp == undefined || xmlhttp == null) { alert("当前浏览器不支持创建XMLHTTPREQUEST对象,请更换浏览器"); return; } xmlhttp.onreadystatechange = callback; xmlhttp.open("GET", "ModifySession.ashx?session=" + session, true); xmlhttp.send(null); } function callback() { //判断和服务器的交互是否完成,还要判断服务器端是否返回了数据 if (xmlhttp.readyState == 4) { //表示和服务器端的交互完成 if (xmlhttp.status == 200) { //alert("正确返回了数据"); return; } } } 在回调函数中,我只写了一个测试正常返回数据的语句,后来注释掉了。 在为a标签绑定事件时,我最初用的是拼接字符串的方法,就是从数据库中查到模块ID和模块名称,然后通过下面的一条语句进行语句拼接: 代码如下:StringBuilder sbModel = new StringBuilder(); //将可以访问的模块进行菜单拼接 for (int i = 0; i < dtModel.Rows.Count; i++) { sbModel.Append("<li><a id="model" + dtModel.Rows[0]["mdlID"].ToString() + "" href="SpaceWeb.aspx" target="_parent" runat="server" onclick="submit(this)">" + dtModel.Rows[i]["mdlName"].ToString() + "</a></li>"); } 可是这样写的很容易出错,虽然在复制进来之前,我是写过测试语句,然后再将变量写到该写位置的,但是这样写出来的语句是很难进行调试的。 在和别人交流的过程中,说道了Repeater控件,恍然大悟,我重复的这个过程,不就是Repeater控件干的事么?控件替我们干了,干嘛还要自己写这么容易出错的代码呢? 代码如下:<asp:Repeater runat="server" id="rptModel"> <ItemTemplate> <li><a id="model"+"<%#Eval("mdlID")%>" href="SpaceWeb.aspx" target="_parent" runat="server" onclick="submit(this)"><%#Eval("mdlName" %></a></li> </ItemTemplate> </asp:Repeater> 是不是这样写,感觉会清晰好多呢,因为我之前用的拼接字符串,并且实现了,用Repeater只是一个思路,在id拼接那不知道会不会又问题,如果有问题,欢迎斧正。 至此,我的第一篇有关AJAX的文章就写完了,关于对AJAX的理解只是一个开始,这个里面没有涉及到数据交互,所以对于某些知识的解释还是有些苍白的,随着学习的深入,关于AJAX的使用,不会仅仅停留在updatepanel和timer这些控件上的。对于某些不太难的实例,自己做一下还是比较好的。 关于这个例子,你可以问用一个LinkButton其实就可以实现,干嘛弄这么麻烦,但是我想说,我一开始也没有想到一个LinkButton就可以解决,是自己把问题复杂化了,这个里面涉及到一个页面跳转,其实完全可以用LinkButton解决,但是学习嘛就是一个过程,用自己犯的一个小迷糊促进了对AJAX的理解,何尝不是一件快事~~ 对于AJAX的理解,还在一步步的进行,如果有什么错误,还望大家积极评论点评

学习Java最重要的是哪些知识点?

core java 吧 重要的是看透 不要贪多 图快

怎么用ajax如何实现大文件上传的功能

这次给大家带来怎么用ajax如何实现大文件上传的功能,用ajax实现大文件上传的注意事项有哪些,下面就是实战案例,一起来看一下。大家都知道php上传文件有限制,如果没有修改过php.ini文件的话,默认的上传大小限制为2M,那么该如何上传大文件了,比如说上传一个1G多的大文件,可以使用大文件切割上传的方式来解决。何为大文件切割上传? 原理:利用HTML5的新特性,将文件内容切割成分段的二进制信息,然后每次向服务器上传一段,而服务器,只需要把我们每次上传的二进制信息整合存储到一个文件中,那么最后这个文件就是所上传的文件。由于php.ini默认的上传大小为2M,如果每批都上传2M,我测试的时候时间比较长,这里我将其限制大小该为20M,最大post数据为28M,便于测试。如果实际开发中不能修改其参数,则每批上传的数据不能超过最大限制。post_max_size = 28M upload_max_filesize = 20M我的是在nginx里面上传所以还需要修改Nginx配置文件/etc/nginx/nginx.con//在http{} 里面加即可 client_max_body_size 50m#客户端最大上传大小 50MJavaScript中的File对象在之前的文章中我们已经使用到了这个Api,File对象中保存了文件的大小、名称、类型等信息JavaScript中的Blob对象 Blob对象是二进制对象,也是File对象的父类,Blob对象中有一个很重要的方法:slice() 方法,利用这个方法我们可以把文件内容切割成二进制信息。slice() 方法接受三个参数,起始偏移量,结束偏移量,还有可选的 mime 类型。如果 mime 类型,没有设置,那么新的 Blob 对象的 mime 类型和父级一样。上传页面index.php:<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <title>大文件切割上传</title> <link rel="stylesheet" href=""> <script> function selfile(){ const LENGTH = 1024 * 1024 * 10;//每次上传的大小 var file = document.getElementsByName("video")[0].files[0];//文件对象 var filename=document.getElementsByName("video")[0].files[0].name; var totalSize = file.size;//文件总大小 var start = 0;//每次上传的开始字节 var end = start + LENGTH;//每次上传的结尾字节 var fd = null//创建表单数据对象 var blob = null;//二进制对象 var xhr = null;//xhr对象 while(start < totalSize){ fd = new FormData();//每一次需要重新创建 xhr = new XMLHttpRequest();//需要每次创建并设置参数 xhr.open("POST","upload.php",false); blob = file.slice(start,end);//根据长度截取每次需要上传的数据 fd.append("video",blob);//添加数据到fd对象中 fd.append("filename",filename); //获取文件的名称 xhr.send(fd);//将fd数据上传 //重新设置开始和结尾 start = end; end = start + LENGTH; } } </script> </head> <body> <h1>大文件切割上传</h1> <input type="file" name="video" onchange="selfile();" /> </body> </html>接收数据页面upload.php:<?php /** * 大文件切割上传,把每次上传的数据合并成一个文件 */ $filename = "./uploads/".$_POST["filename"];//确定上传的文件名 //第一次上传时没有文件,就创建文件,此后上传只需要把数据追加到此文件中 if(!file_exists($filename)){ move_uploaded_file($_FILES["video"]["tmp_name"],$filename); }else{ file_put_contents($filename,file_get_contents($_FILES["video"]["tmp_name"]),FILE_APPEND); } ?>测试之前,先创建uploads文件夹如果是linux系统的话 切记给uploads给权限sudo chmod -R 777 uoloads/ //赋予uploads文件夹 777 权限 -R 递归子文件相信看了本文案例你已经掌握了方法,更多精彩请关注Gxl网其它相关文章!推荐阅读:怎样用Ajax异步检查用户名有无重复ajax获取json数据为undefined应该如何使用

ajax请求的五个步骤

ajax请求的五个步骤如下步骤如下五个步骤1.创建异步对象,首先,创建一个XMLHttpRequest异步对象。2.设置请求方式和地址,然后,设置请求方式和请求地址3.用send发送请求,接着,用send发送请求。4.监听状态变化,然后,监听状态变化。5.接收返回的数据,最后,接收返回的数据

Java高级软件工程师会面试哪些问题

如果要应聘高级开发工程师职务,仅仅懂得Java的基础知识是远远不够的,还必须懂得常用数据结构、算法、网 络、操作系统等知识。因此本文不会讲解具体的技术,笔者综合自己应聘各大公司的经历,整理了一份大公司对Java高级开发工程师职位的考核纲要,希望可以帮助到需要的人。1 Java基础1.1 Collection和Map(1)掌握Collection和Map的继承体系。(2)掌握ArrayList、LinkedList、Vector、Stack、PriorityQueue、HashSet、 LinkedHashSet、TreeSet、HashMap、LinkedHashMap、TreeMap、WeakHashMap、EnumMap、 TreeMap、HashTable的特点和实现原理。(3)掌握CopyOnWriteArrayList、CopyOnWriteArraySet、ConcurrentHashMap的实现原理和适用场景。1.2 IO(1)掌握InputStream、OutputStream、Reader、Writer的继承体系。(2)掌握字节流(FileInputStream、DataInputStream、BufferedInputStream、 FileOutputSteam、DataOutputStream、BufferedOutputStream)和字符流 (BufferedReader、InputStreamReader、FileReader、BufferedWriter、 OutputStreamWriter、PrintWriter、FileWriter),并熟练运用。(3)掌握NIO实现原理及使用方法。1.3 异常(1)掌握Throwable继承体系。(2)掌握异常工作原理。(3)了解常见受检异常(比如FileNotFoundException)、非受检异常(比如NullPointerException)和错误(比如IOError)。1.4 多线程(1)掌握Executors可以创建的三种(JAVA8增加了一种,共四种)线程池的特点及适用范围。(2)掌握多线程同步机制,并熟练运用。1.5 Socket(1)掌握Socket通信原理。(2)熟练使用多线程结合Socket进行编程。2 Java虚拟机2.1 JVM内存区域划分(1)掌握程序计数器、堆、虚拟机栈、本地方法栈、方法区(JAVA8已移除)、元空间(JAVA8新增)的作用及基本原理。(2)掌握堆的划分:新生代(Eden、Survivor1、Survivor2)和老年代的作用及工作原理。(3)掌握JVM内存参数设置及调优。2.2 类加载(1)掌握类的加载阶段:加载、链接(验证、准备、解析)、初始化、使用、卸载。(2)掌握类加载器分类及其应用:启动类加载器、扩展类加载器、应用程序类加载器、自定义加载器。3 J2EE(1) 掌握JSP内置对象、动作及相关特点和工作原理。(2) 掌握Servlet的特点和工作原理。(3) 掌握Spring框架的IOC和AOP实现原理(反射和动态代理)。(4) 至少掌握一个MVC框架(Spring MVC,Struts等)的工作原理,并熟练运用。(5) 至少掌握一个ORM框架(Hibernate,MyBatis等)的工作原理,并熟练运用。4 数据结构与算法(1)掌握线性表和树的特点并熟练运用。(2)掌握常用排序和查找算法:插入排序(直接插入排序、希尔排序)、选择排序(直接选择排序、堆排序)、交换排序(冒泡排序、快速排序)、归并排序,顺序查找、二分查找、哈希查找。(3) 熟练运用常见排序和查找算法思想解决编程问题。(4)了解几大基本算法:贪心算法、分治策略、动态规划。5 计算机网络(1)掌握网络的分层结构,及每层的功能特点。(2)掌握TCP/IP的通信原理(三次握手、四次挥手)6 数据库(1)掌握复杂的SQL语句编写。(2)掌握数据库的优化(SQL层面和表设计层面)。(3)至少掌握一款数据库产品。(4)熟悉高并发、大数据情况下的数据库开发。7 Web技术(1)掌握AJAX的工作原理。(2)至少熟悉一款JS框架(比如JQuery)。8 设计模式(1)熟悉常见的设计模式。(2)会将设计模式理论应用到实际开发中。9 Linux(1)熟练运用Linux常见命令。(2)熟悉Linux操作系统基本概念及特点。(3)熟悉Shell脚本。10 操作系统(1)掌握操作系统的进程管理。(2)了解操作系统的I/O。11 正则表达式(1)掌握常见正则表达式符号。(2)熟练运用正则表达式解决实际问题(比如匹配电话号码、邮箱、域名等)。

使用ajax 保存数据到数据库但不刷新页面!

客户端:新建一个任意名字.html <html> <head> <script type="text/javascript"> function test(name){ var xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); xmlHttp.open("GET","checkUser.asp?name="+name,true); xmlHttp.onreadystatechange = function(){ if(xmlHttp.readyState==4){ if(xmlHttp.status==200){ if(xmlHttp.responseText="yes") alert("可以用"); else alert("用户名已经存在!"); } } } xmlHttp.send(null); } </script> </head> <body> <input type="button" value="Ajax" onclick="test("aaa");"/> </body> </html> 服务器端:新建一个checkUser.asp <% "为了简化,我不读取数据库 if(Request.QueryString("name")="aaa") Response.Write("yes"); %>

JAVA软件工程师需要学哪些课程

JAVA可谓是编程界的一棵常青树,而且涉及的知识也比较广,至于要学什么,怎么学,你得先端正一个态度,是知道、明白、还是精通。我找了家爱尚实训的课程大纲,比较全具体内容可以给你提借下参考1、Java基础阶段:Html静态网页、CSS层叠样式表、JavaScript动态技术、MySql数据库开发、J2SE面向对象等2、JavaWeb进升阶段:Servlet实现及五大对象、JSP原理及九大对象、EL表达式、JSTL标签库、AJAX异步技术、JQuery框架、XML、JSON数据共享及交换等3、Java技术提升阶段:多线程、反射、过滤器、监听器、连接池、事务、静态代理、动态代理、AOP、IOC等4、框架及项目实训阶段:Mybatis框架、spring框架、springMVC、redis缓存、maven项目构建等,说了这么多,还有一条最重要的就是不光要掌握理论知识,一定要多做项目,多敲练习,毕竟代码才是我们的最终根本java的学习方式如下:1、网上参加网络在线教育直播课程优点:时间灵活,缺点:有问题不能及时解决,自律性不强2、参加java类型的培训班。优点:能够系统学习,掌握扎实,上手快,缺点:无3、如果有点编程基础的,自学可以选择看书、看视频教学,然后操作实战方式。学习时长未知。

thinkphp 验证是不是ajax提交

可以用,可以不用。

学java最重要的是学java的什么内容

这里有份JAVA从入门到精通的全套视频课程,推荐给你,Java学习资料分享:https://www.cnblogs.com/bingyimeiling/p/10289805.html

有没有方法可以使得前一个ajax请求没有处理完毕前,下一个ajax请求先等待?

//判断不同浏览器,采用不同方式创建XMLHttpRequest对象 function createXmlHttpRequest(){ if(window.ActiveXObject){ return new ActiveXObject("Microsoft.XMLHTTP");//windows浏览器 }else if(window.XMLHttpRequest){ return new XMLHttpRequest();//其他浏览器 } }

怎么实现Ajax的三级联动商品分类

这次给大家带来怎么实现Ajax的三级联动商品分类,实现Ajax的三级联动商品分类的注意事项有哪些,下面就是实战案例,一起来看一下。思路分析:效果:当页面加载时,利用ajax异步向后台请求数据,加载一级商品类别,当选择一级商品时加载二级商品,选择二级商品加载三级商品。实现:1、当拿到数据后加载pid为0的商品,并动态创建option将商品追加到一级菜单中,并设置value值2、当选择一级商品时加载pid=当前id的商品,并创建option将商品追加到二级菜单中,并设置value值3、当选择二级商品时加载pid=当前id的商品,并创建option将商品追加到三级菜单中,并设置value值页面效果:$(function(){ //请求路径 var url="03goods.php"; //option默认内容 var option="<option value="0">未选择</option>"; //获取jq对象 var $sel1=$(".sel1"); var $sel2=$(".sel2"); var $sel3=$(".sel3"); //自动生成一个<option>元素 function createOption(value,text){ var $option=$("<option></option>"); $option.attr("value",value); $option.text(text); return $option; } //加载数据 function ajaxSelect($select,id){ //get请求 $.get(url,{"pid":id},function(data){ $select.html(option); for(var k in data ){ $select.append(createOption(data[k].id,data[k].name)); } },"json"); } //自动加载第一个下拉菜单 ajaxSelect($sel1,"0"); //选择第一个下拉菜单时加载第二个 $sel1.change(function(){ var id=$sel1.val(); if(id=="0"){ $sel2.html(option); $sel3.html(option); }else{ ajaxSelect($sel2,id); } }); //选择第二个下拉菜单时加载第三个 $sel2.change(function(){ var $id=$sel2.val(); if($id=="0"){ $sel3.html(option); }else{ ajaxSelect($sel3,$id); } }); });后台代码:<?php header("Content-Type:text/html; charset=utf-8"); //数据 $arr=array( //array(分类id,分类名,分类的父id) array("id"=>"1","name"=>"数码产品","pid"=>"0"), array("id"=>"2","name"=>"家电","pid"=>"0"), array("id"=>"3","name"=>"书籍","pid"=>"0"), array("id"=>"4","name"=>"服装","pid"=>"0"), array("id"=>"5","name"=>"手机","pid"=>"1"), array("id"=>"6","name"=>"笔记本","pid"=>"1"), array("id"=>"7","name"=>"平板电脑","pid"=>"1"), array("id"=>"8","name"=>"智能手机","pid"=>"5"), array("id"=>"9","name"=>"功能机","pid"=>"5"), array("id"=>"10","name"=>"电视机","pid"=>"2"), array("id"=>"11","name"=>"电冰箱","pid"=>"2"), array("id"=>"12","name"=>"智能电视","pid"=>"10"), array("id"=>"13","name"=>"编程书籍","pid"=>"3"), array("id"=>"14","name"=>"JavaScript","pid"=>"13"), ); //获取指定分类的商品 function getByPid($arr,$pid){ $result=array(); foreach($arr as $v){ if($v["pid"]==$pid){ $result[]=$v; } } return $result; } //获取请求参数 $pid=isset($_GET["pid"])?$_GET["pid"]:"0"; $result=getByPid($arr,$pid); //输出json数据 echo json_encode($result);?>相信看了本文案例你已经掌握了方法,更多精彩请关注Gxl网其它相关文章!推荐阅读:Ajax结合php怎么实现二级联动新手必看的Ajax技术组成与核心原理分析

Ajax权威指南的图书目录

前言第一部分 Ajax基本原理第1章 Web重生1.1 Web页面组件1.2 现代Web标准1.3 浏览器1.4 标准遵循1.5 欢迎来到w曲2.0第2章 从Web网站到Web应用程序2.1 转变2.2 基本的Web与Ajax设计模式2.3 应用程序环境2.4 开发人员2.5 Ajax不能做的事情第3章 服务器、数据库以及Web3.1 w曲服务器3.2 服务器端脚本3.3 数据库3.4 从关系数据库中存取数据3.5 连接到界面3.6 框架与语言3.7 框架有什么好处第4章 基础:编-写XML与JSON脚本4.1 XML4.2 JSON4.3 选择数据交换格式4.4 客户端框架简介4.5 简化开发第5章 模拟DOM5.1 理解DOM5.2 我们以前见过5.3 操纵DOM:元素、属性与对象5.4 更改样式5.5 DOMqb的事件5.6 用DOM填充表格5.7 innerHTML是魔鬼吗第6章 设计Ajax界面6.1 可用性6.2 功能性6.3 可视化6.4 可访问性6.5 Ajax界面第二部分 Ajax基础第7章 布局网站导航7.1 菜单7.2 选项卡7.3 导航辅助7.4 Ajax导航的问题7.5 总体布局第8章 表格与列表之乐8.1 不使用表格的布局8.2 可访问的表格8.3 表格排序8.4 带有样式的表格8.5 表格分页8.6 列表2.08.7 列表万金油第9章 不用框架的页面布局9.1 使用框架9.2 XHTML与框架9.3 Ajax与DIv的魔术9.4 页面布局第10章 导航栏与窗口10.1 警告框10.2 对窗口进行集成10.3 导航窗口10.4 工具提示10.5 必需的弹出框第11章 自定义客户端第12章 错误:(别具一格地)生存,还是毁灭第13章 这不是你老爸的动画第14章 在前往表单的路上发生的趣事第15章 数据验证:是客户,是服务器还是两者皆是第三部分 应用程序中的Ajax第16章 搜索:新领域第17章 Web服务介绍第18章 Web服务:API第19章 混搭第20章 用于企业通信需求第21章 无需插件的Internet游戏第四部分 打包第22章 模块化编码第23章 优化Ajax应用程序第五部分 附录

jqueryajax向后台传递数组以及如何在后台接收数组代码详解

JS中的数组是弱类型的可以放任何类型(对象、基本类型),但是如果数组中放的是对象类型,传递到后台是显示的只能是对象字符串--[object Object],原因如下: 在后台接收的时候,只能用request来接收,request.getParameterValues()方法返回的是一个String[],所以,应该是在前台传输的时候调用了对象的toString()方法,那么如果依然想传递对象怎么办?但是可以使用JSON字符串来实现,在后台把JSON字符串解析成JAVA对象。 也许,你要说如果是复合对象怎么办,比如如下: public class Person { private String username; private String password; private Address addr; }Person对象里有个Address类型的addr属性,没关系,任何对象最终用到的属性值都是基本数据类型,只需要使用对应的包装类型parseInt、或者parseXXX解析即可。 实现: OK,原理就是这么个。先看JS如何写: var as = []; var temp = []; for ( var int = 0; int < 5; int++) { temp.push("{"k":"); temp.push(int); temp.push(","v":"); temp.push(int); temp.push("}"); as.push(temp.join("")); } //Jquery中的方法,具体参考Jquery API $.post( "servlet/AjaxServlet?m=putWarningRule",{"aa":as} );最终拼成的串就是如下样式,(只作举例) {"k":0,"v":0}后台接收,不讨论任何框架,只需要HttpServletRequest即可 String[] jsonArr = request.getParameterValues("aa[]");有一点需要注意,在js中传参的时候参数名叫"aa",而在后台接收的时候却是"aa[]",这里应该是Jquery做了转换,所以最好的方式就是在JS中就改为"aa[]",之所以这里没有写"[]"是为了说明问题。可以使用如下方式打印request中的所有参数 Enumeration<String> names = request.getParameterNames(); while (names.hasMoreElements()) { String string = (String) names.nextElement(); System.out.println(string); }OK,至此为止,已经接收完毕,剩下的就是如何将一个JSON字符串转成一个POJO了。/** * 将对象转换为JSON格式的字符串 * @param obj * @return 返回JSON字符串 */ public static String toJSONAsString(Object obj){ try { return JSONMapper.toJSON(obj).render(false); } catch (MapperException e) { e.printStackTrace(); } return null; } @SuppressWarnings("unchecked") public static <T> T jsonToObject(String jsonStr, Class<T> targetClass) throws TokenStreamException, RecognitionException, MapperException{ JSONValue jv = new JSONParser(new StringReader(jsonStr)).nextValue(); return (T) JSONMapper.toJava(jv,targetClass); } //test public static void main(String[] args) throws Exception { Person p = new Person(); p.setK("a"); p.setV("v"); String json = toJSONAsString(p); Person np = jsonToObject(json,Person.class); System.out.println(np.getK()+"=="+np.getV()); }request取到值后,遍历数组,挨个转换 Person p = JSONUtils.jsonToObject(jsonArr[0], Person.class);Person类如下: public class Person { private String k; private String v; public String getK() { return k; } public void setK(String k) { this.k = k; } public String getV() { return v; } public void setV(String v) { this.v = v; } }有时候会出现问题,后台接收不到该值。解决办法: 设置jQuery.ajax的tradional属性$.ajax({ url: "/xxx", type: "GET", data: { "boxIds": boxIds, "boxType": 0, "time": new Date().getTime() }, traditional: true,//这里设置为true success: function(data) { //do sth... }});请求参数2这次参数不带”[]”了,并且后台可以成功接收到该数组。

为什么我写的ajax读不出本地文本?下面是html和js

1、纯html是无法直接读取txt文件内容的,这是很肯定的没有疑问的。html就是我们常说的静态文件,是无法读取处理服务器或本地机上的TXT文件的。2、读取txt文件内容可以用JS的ajax读取。ajax读取文本内容原理较为简单,重点基础是熟悉XMLHTTP对象的属性和方法。相关例子:<script>function dotxt(){var request=null;if(window.XMLHttpRequest){request=new XMLHttpRequest();}else if(window.ActiveXObject){request=new ActiveXObject("Microsoft.XMLHTTP");}if(request){request.open("GET","1.txt",true);"测试读取1.txt的内容request.onreadystatechange=function(){if(request.readyState===4){if (request.status == 200 || request.status == 0){document.getElementById("vv").innerHTML=request.responseText;}}}request.send(null);}else{alert("error");}} </script><input type="button" value="读取" onclick="dotxt();"/><div id="vv"></div>

如何实现ajax前台后台跨域请求

本篇文章通过前台跨域请求处理以及后台跨域的数据处理方式介绍,详细分析了ajax跨域的问题,对此有需要的朋友学习下。最近一直在搞公众号前台开发,遇到了ajax跨域请求的问题,像地区的省-市-县三级联动、汽车品牌-车系-车款的三级联动查询等都需要调用外部接口(其他工程项目的接口)完成。下面就分享一下个人解决跨域请求的方案,当然是在后台程序猿大哥的帮助下,我才弄明白了其中的渊源,赶紧记录下来慢慢积累,也希望对大家能有所帮助,还请积极提出意见或建议。跨域请求需要借助后台代码接收callback回调函数,对json数据进行进一步处理;前台再用ajax请求向服务器发送callback参数,并指定数据格式为jsonp。一、后台对跨域请求进行处理1.CarBrandController.java(汽车品牌接口java文件),这里列出的方法主要用来根据不同的level值查询对应的品牌、车系、车款,在这里对跨域请求做一个接收回调函数的处理,如果返回的callback为null,则不是跨域请求,不需要做特殊处理,直接打印json接口数据即可;如果返回的callback不为null,则表示跨域请求,这时要对json数据做一个特殊处理,即在json数据的外层加一对小括号包起来,具体请看HttpAdapter.java文件中的printlnJSONObject方法。public void json(HttpServletRequest request,HttpServletResponse response){ Map<String,Object>map=new HashMap<String, Object>(); String id = request.getParameter("id"); //接收ajax请求带过来的id String level = request.getParameter("level"); //接收ajax请求带过来的level String callback=request.getParameter("callback"); //接收ajax请求带过来的callback参数 if ("1".equals(level)) { //如果level是"1",则查询第一级目录内容 map.put("results", this.carBrandService.findByAttr(null, "first_letter asc")); //调用查询方法,结果放入map } else if ("2".equals(level)) { //如果level是"2",则查询第二级目录内容 map.put("results", this.carSerieService.findByAttr("parent_id="+id, "first_letter asc"));//调用查询方法,结果放入map } else if ("3".equals(level)) { //如果level是"3",则查询第三极目录内容 map.put("results", this.carModelYearService.findByAttr("parent_id="+id, "jian_pin desc"));//调用查询方法,结果放入map } map.put("level",level); if (null==callback) { //如果接收的callback值为null,则是不跨域的请求,输出json对象 HttpAdapter.printlnObject(response, map); }else{ //如果接收的callback值不为null,则是跨域请求,输出跨域的json对象 HttpAdapter.printlnJSONPObject(response, map, callback); } }2.HttpAdapter.java(输出对象的java文件),printlnObject方法打印正常json字符串;printlnJSONObject方法对json字符串进行了特殊处理。/** * 打印对象 * @param response * @param object */ public static void printlnObject(HttpServletResponse response,Object object){ PrintWriter writer=getWriter(response); writer.println(JSON.toJSONString(object)); } /** * 打印跨域对象 * @param response * @param object */ public static void printlnJSONPObject(HttpServletResponse response,Object object,String callback){ PrintWriter writer=getWriter(response); writer.println(callback+"("+JSON.toJSONString(object)+")"); }二、前台ajax跨域请求数据写法1:向服务器发送一个参数callback=?,同时指定dataType为"jsonp"的格式,跨域请求时指定的数据格式必须是jsonp的形式。function loadData(obj,level,id,value){ $.ajax({ url:"http://192.168.1.106:8086/carBrand/json.html?level="+level+"&id="+id+"&callback=?", //将callback写在请求url后面作为参数携带 type:"GET", async:false, dataType:"jsonp", success:function(data){ console.log(data); //其他处理(动态添加数据元素) }); }写法2:callback不需要写在url中,但是要指定jsonp参数为"callback",并给jsonpCallback参数一个值。function loadData(obj,level,id,value){ $.ajax({ url:"http://192.168.1.106:8086/carBrand/json.html?level="+level+"&id="+id, type:"GET", dataType:"jsonp", jsonp: "callback", //将callback写在jsonp里作为参数连同请求一起发送 jsonpCallback:"jsonpCallback1", success:function(data){ console.log(data); }); }以上两种写法的含义是一样的,只是写法不同罢了。接下来补充一下jsonp的工作原理。三、jsonp跨域的原理解析jsonp的最基本的原理是:动态添加一个<script>标签,而script标签的src属性是没有跨域的限制的。这样说来,这种跨域方式其实与ajax XmlHttpRequest协议无关了.JSONP是一个非官方的协议,它允许在服务器端集成Script tags返回至客户端,通过javascript callback的形式实现跨域访问JSONP即JSON with Padding。由于同源策略的限制,XmlHttpRequest只允许请求当前源(域名、协议、端口)的资源。如果要进行跨域请求,我们可以通过使用html的script标记来进行跨域请求,并在响应中返回要执行的script代码,其中可以直接使用JSON传递javascript对象。这种跨域的通讯方式称为JSONP。jsonCallback 函数jsonp1236827957501(....): 是浏览器客户端注册的,获取跨域服务器上的json数据后,回调的函数Jsonp原理:首先在客户端注册一个callback (如:"jsoncallback"), 然后把callback的名字(如:jsonp1236827957501)传给服务器。注意:服务端得到callback的数值后,要用jsonp1236827957501(......)把将要输出的json内容包括起来,此时,服务器生成 json 数据才能被客户端正确接收。然后以 javascript 语法的方式,生成一个function , function 名字就是传递上来的参数 "jsoncallback"的值 jsonp1236827957501 .最后将 json 数据直接以入参的方式,放置到 function 中,这样就生成了一段 js 语法的文档,返回给客户端。客户端浏览器,解析script标签,并执行返回的 javascript 文档,此时javascript文档数据,作为参数,传入到了客户端预先定义好的 callback 函数(如上例中jquery $.ajax()方法封装的的success: function (json))里.(动态执行回调函数)可以说jsonp的方式原理上和<script src="http://跨域/...xx.js"></script>是一致的(qq空间就是大量采用这种方式来实现跨域数据交换的) .JSONP是一种脚本注入(Script Injection)行为,所以也有一定的安全隐患.上面是我整理给大家的,希望今后会对大家有帮助。相关文章:有关Express中log4js实际用法使用NodeJS如何实现WebSocket功能使用JS获得节点元素的方法

ajax 请求返回的数据是什么?

1. ajax请求的页面只要返回你需要的东西,比如username, 如果index.php页面返回很多东西,你可以另外写个index2.php,只返回需要的。2.ajax请求后,得到数据,需要写js方法处理返回的数据,就是所谓的回调函数,在这个函数里,就是你要处理的东西,比如把返回结果填充到username 字段,或password字段,更具体的你要上网了解下AJAX的工作原理。 其实很简单的。

ajax获取到json数据怎么显示在jsp页面tb上?

第一步:在你的Action中创建一个json数据public class AjaxAction extends ActionSupport{ /** * */private static final long serialVersionUID = 1L; private String result; public String getResult() { return result; } public void setResult(String result) { this.result = result; }public String getjson() { JSONObject json = new JSONObject(); json.put("name","张三"); json.put("password","123456"); result=json.toString(); return SUCCESS;}第二步:编写struts.xml文件中的内容<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN" "http://struts.apache.org/dtds/struts-2.5.dtd"> <struts> <!-- 设置开发者模式 修改action中的名字可以不用重启服务器 --> <constant name="struts.devMode" value="true"></constant> <!-- 只有在后缀中有(.do)的才经过,这个value可以自己修改 --> <constant name="struts.action.extension" value="do"></constant> <!-- 开启动态方法调用 --> <constant name="struts.enable.DynamicMethodInvocation" value="true"/> <package name="default" extends="json-default" namespace=""> <action name="ajax" class="com.action.AjaxAction" method="getjson"> <result name="success">/ajaxjson.jsp</result> <result type="json" ><!-- 这里指定将被Struts2序列化的属性,该属性在action中必须有对应的getter方法 --> <param name="root">result</param> </result> </action> </package> </struts>凡是使用Struts2序列化对象到JSON的action,所在的package必须继承自json-default,注意,这里唯一的result,没有指定name属性。parm设置name=“root”表示局部刷新,返回根目录页面.第三步:首先先了解Ajax的原理:这是用jQuery做的,需要引 jsfunction testCheck(num){ $.ajax({ type:"post",//提交方式url:"TestCheckServlet",//提交地址async:true,//是否异步请求dataType:"html",//返回类型data:{"num":num},//传过去的值success:function(data,textStatus){//成功执行的方法var json=eval("("+data+")");//将传过来的数据转json,也可以传过来就是json数据免得麻烦转 alert(json.name); }, error:function(){//失败执行的方法alert("error"); } }) }思路:1、在input的onblur事件中进行验证。2、通过ajax发送手机号给后台Servlet。3、Servlet对手机号进行数据库查询,返回是否存在的文字给ajax。4、ajax收到返回文字后,显示到标签上。总结:Ajax能够让浏览器和服务器进行交互,并且在不刷新页面的情况下对网页内容进行更新,大大提高了用户体验,通过Ajax技术能够构建交互性极强的Web应用程序。

ajax返回整个页面或div

1. ajax请求的页面只要返回你需要的东西,比如username, 如果index.php页面返回很多东西,你可以另外写个index2.php,只返回需要的。2.ajax请求后,得到数据,需要写js方法处理返回的数据,就是所谓的回调函数,在这个函数里,就是你要处理的东西,比如把返回结果填充到username 字段,或password字段,更具体的你要上网了解下AJAX的工作原理。 其实很简单的。

如何使用HTML5中postMessage实现Ajax中的POST跨域问题的详细介绍

HTML5中提供了在网页文档之间相互接收与发送信息的功能。使用这个功能,只要获取到网页所在窗口对象的实例,不仅仅同源(域+端口号)的web网页之间可以互相通信,甚至可以实现跨域通信。浏览器支持程度:IE8+,firefox4+,chrome8+ opera10+1. 首先,要想接收从其他的窗口发过来的消息,就必须对窗口对象的message事件进行监听,如下代码:window.addEventListener(“message”, function(){},false);2. 其次,需要使用window对象的postMessage方法向其他窗口发送消息,该方法定义如下所示:otherWindow.postMessage(message, targetOrigin);该方法使用2个参数,第一个参数为所发送的消息文本,但也可以是任何javascript对象,第二个参数是接收消息的对象窗口的url地址(比如:http:127.0.0.1:8080/) , 但是我们也可以在url地址字符串中使用通配符”*”, 指定全部的域下,但是我们还是建议使用特定的域名下,otherWindow为要发送窗口对象的引用。Demo演示:假如现在我在hosts文件下 ,绑定2 个域名如下:127.0.0.1 abc.example.com127.0.0.1 longen.example.com现在假如在abc.example.com域下有一个abc.html页面,在longen.example.com域下有def.html页面,现在我是希望这2个不同域名下的页面能互相通信,abc.html代码如下:<form> <p> <label for="message" style="color:red;font-size:24px;">给iframe子窗口发一个信息:</label> <input type="text" name="message" value="send" id="message" /> <input type="submit" value="submit" id="submit"/> </p> </form> <h4>目标iframe传来的信息:</h4> <p id="test">暂无信息</p> <iframe id="iframe" src="http://longen.example.com/webSocket/def.html" style="display:none"></iframe>JS代码如下:var win = document.getElementById("iframe").contentWindow;document.getElementById("submit").onclick = function(e){ e.preventDefault(); win.postMessage(document.getElementById("message").value,"http://longen.example.com"); } window.addEventListener("message",function(e){ e.preventDefault(); document.getElementById("test").innerHTML = "从" + e.origin + "那里传过来的消息: " + e.data;},false);Def.html代码如下:HTML代码:<form> <p> <label for="message">给父窗口abc.html发个信息:</label> <input type="text" name="message" value="send" id="message" /> <input type="submit" /> </p> </form> <p id="test2">暂无信息。</p>JS代码如下:var parentwin = window.parent; window.addEventListener("message",function(e){ document.getElementById("test2").innerHTML = "从父窗口传来的域" +e.origin + ",和内容数据:" + e.data; parentwin.postMessage("HI!你给我发了"<span>"+e.data+""</span>。","http://abc.example.com");},false);当我点击abc.html页面后,可以看到效果如下,从def.html返回内容了。如下:我们需要知道如下几条信息:通过对window对象的message事件进行监听,可以接收消息。通过访问message事件的origin属性,可以获取消息的发送源。通过访问message事件的data属性,可以取得消息内容。使用postMessage方法发送消息。通过访问message事件的source属性,可以获取消息发送源的窗口对象(准确的说,应该是窗口的代理对象)。有了上面的基本知识点,我们可以延伸为实现ajax POST跨域的问题。二:使用postMessage 知识点解决 ajax中POST跨域问题。原理:原理也很简单,假如我们的域名abc.example.com下的abc.html页面需要发ajax请求(跨域,域名为longen.example.com)下,那么我们还是先跨页面文档的形式,和上面一样,我们可以现在longen.example.com下 建立一个页面,比如叫def.html. 那么我们现在还是在 abc.html 页面嵌入一个隐藏域iframe src路径指向longen.example.com域下def,html页面。过程还是和跨文档类似,只是现在在def.html页面中 在window.onmessage 事件内写ajax请求即可,如下代码:abc.example.com下的abc.html页面如下:html代码和上面一样,下面是JS代码:var win = document.getElementById("iframe").contentWindow;document.getElementById("submit").onclick = function(e){ e.preventDefault(); win.postMessage(document.getElementById("message").value,"http://longen.example.com/"); } window.addEventListener("message",function(e){ e.preventDefault(); alert(typeof e.data) var json = JSON.parse(e.data); console.log(json); alert(json.url)},false);def.html代码如下:JS代码如下://获取跨域数据 window.onmessage = function(e){ $.ajax({ url: "http://longen.example.com/webSocket/test.php", type:"POST", dataType:"text", //data: {msg:e.data}, success: function(res) { var parentwin = window.parent; parentwin.postMessage(res,"http://abc.example.com");//跨域发送数据 } }); };test.php代码如下:<?php $data=array( url =>1, name =>"2", "xx-xx"=>"xx" ); echo json_encode($data);?>如上实现方式 就可以实现ajax post跨域了。

怎么用AJAX实现瀑布流

这次给大家带来怎么用AJAX实现瀑布流,用AJAX实现瀑布流的注意事项有哪些,下面就是实战案例,一起来看一下。瀑布流是当前一种比较流行的网站界面布局方式,参差不齐的多栏布局以及到达底部自动加载的方式,使网站在视觉和用户体验上都能得到较大的提升。最早使用此布局的是国外的图片网站Pinterest,之后国内的一些图片网站也开始使用瀑布流布局,包括和Pinterest类似的花瓣网、图片社区lofter、美丽说、蘑菇街等等。瀑布流在布局上对于大多数人来说应该是很简单的,比较只有几列而已。瀑布流最主要的还是数据的异步加载。首先说一下这次实例所用的瀑布流式方法。瀑布流布局实现的方法很多,具体可以自行百度,此处不再赘述。本文中瀑布流实现方法为四列布局(li*4),每个图片为一个盒子(p>img+p),从后台读取数据后赋值给盒子中的元素,判定此时高度最小的列(li),然后将盒子添加到对应的列(li),之后进行下一次判定,以此类推,直至本页所有数据加载完成。代码部分:html+css<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>瀑布流布局</title> <style type="text/css"> *{ margin: 0; padding: 0; } ul{ width: 1200px; margin: 0 auto; } ul li{ float: left; width: 250px; list-style: none; margin: 20px; } ul li p{ width: 250px; margin-bottom: 20px; padding: 10px; box-sizing: border-box; border-radius: 5px; box-shadow: 2px 2px 10px #919B9C; } ul li img{ width: 100%; margin-bottom: 10px; } ul li p{ font-family: "microsoft yahei"; font-size: 14px; } </style> <script src="ajax.js" type="text/javascript" charset="utf-8"></script> <script src="pubuliu.js" type="text/javascript" charset="utf-8"></script> </head> <body> <ul id="ul1"> <li></li> <li></li> <li></li> <li></li> </ul> </body> </html>javascript部分:ajax部分和实现部分/** * * @param {Object} method get和post方式 * @param {Object} url 文件路径 * @param {Object} data 页码 * @param {Object} success 成功的函数 */ function ajax(method, url, data, success) { var xhr = null; try { xhr = new XMLHttpRequest(); } catch (e) { xhr = new ActiveXObject("Microsoft.XMLHTTP"); } if (method == "get" && data) { url += "?" + data; } xhr.open(method,url,true); if (method == "get") { xhr.send(); } else { xhr.setRequestHeader("content-type", "application/x-www-form-urlencoded"); xhr.send(data); } xhr.onreadystatechange = function() { if ( xhr.readyState == 4 ) { if ( xhr.status == 200 ) { success && success(xhr.responseText); console.log(xhr.responseText); } else { alert("出错了,Err:" + xhr.status); } } } } ajax部分是在之前所写的Ajax工作原理以及函数的简单封装上修改而来,理解那个之后看这个基本没难度。这个相对那个来说多了一个data参数,data是用来读取数据的页码。window.onload = function() { //获取界面节点 var ul = document.getElementById("ul1"); var li = document.getElementsByTagName("li"); var liLen = li.length; var page = 1; var bool = false; //调用接口获取数据 loadPage();//首次加载 /** * 加载页面的函数 */ function loadPage(){ ajax("get", "getPics.php", "cpage="+page, function(data) { //将数据库中获取的数据转换成数组形式,这里要根据数据库中的数据形式来写,这里我获取到的是json形式 var data = JSON.parse(data); //将数据写入到p中 for(var i = 0; i < data.length; i++) { var index = getShort(li);//查找最短的li //创建新的节点:p>img+p var p = document.createElement("p"); var img = document.createElement("img"); img.src = data[i].preview;//img获取图片地址 img.alt = "等着吧..." //根据宽高比计算img的高,为了防止未加载时高度太低影响最短Li的判断 img.style.height = data[i].height * (230 / data[i].width) + "px"; p.appendChild(img); var p = document.createElement("p"); p.innerHTML = data[i].title;//p获取图片标题 p.appendChild(p); //加入到最短的li中 li[index].appendChild(p); } bool = true;//加载完成设置开关,用于后面判断是否加载下一页 }); } window.onscroll = function (){ var index = getShort(li); var minLi = li[index]; var scrollTop = document.documentElement.scrollTop||document.body.scrollTop; if(minLi.offsetHeight+minLi.offsetTop<scrollTop+document.documentElement.clientHeight){ //开关为开,即上一页加载完成,才能开始加载 if(bool){ bool = false; page++; loadPage(); } } } } /** * 获取数组中高度最小的索引 * @param {Object} li 数组 */ function getShort(li) { var index = 0; var liHeight = li[index].offsetHeight; for(var i = 0; i < li.length; i++) { if(li[i].offsetHeight < liHeight) { index = i; liHeight = li[i].offsetHeight; } } return index; }这部分的功能主要是动态的将生成的p写入到页面中,其中包含对盒子样式的修改和数据的写入,数据通过ajax函数从服务器端获取。需要注意的是:该实例的运行依赖于服务器,所以需要在本地搭建一个简单的服务器,快速搭建可以使用WampService。下面是我们数据来源的php代码:<?php header("Content-type:text/html; charset="utf-8""); /* API: getPics.php 参数 cpage : 获取数据的页数 */ $cpage = isset($_GET["cpage"]) ? $_GET["cpage"] : 1; $url = "http://www.wookmark.com/api/json/popular?page=" . $cpage; $content = file_get_contents($url); $content = iconv("gbk", "utf-8", $content); echo $content;相信看了本文案例你已经掌握了方法,更多精彩请关注Gxl网其它相关文章!推荐阅读:Ajax+PHP的数据交互实现Ajax的循环如何实现

怎样实现用ajax向服务器发送请求并接收服务器返回的数据,并在HTML页面的Table中显示?

比如服务器上有张表或者listid name sex1 张三 男2 李四 女3 王五 男你首先在后台代码中把这个表处理成为JSON格式然后用Response.write的方法输出来,比如这样[{id:1,name:"张三",sex:"男"},{id:2,name:"李四",sex:"女"},{id:3,name:"王五",sex:"男"}]JSON是用于在JS中描述实体对象的一种方式,具体关于JSON的知识可以看w3school.com.cn上的相关内容,我这儿就不给你细讲了,很简单,我只说做法:为了方便使用,你需要在你的页面中引用jQuery库,我不知道你用什么语言做的后台程序,原理一样$.ajax({ url:"这里换成你写好的用于把表转换成JSON的后台处理文件地址,比如a.aspx?参数", type:"POST",//这里是AJAX请求的方式 dataType:"JSON",//如果你回发的内容是JSON格式的就用这个,否则用Text或其他 data:{ 参数1:值, 参数2:值, ...... 参数n:值 },//要发送的参数,如果无参数可以不写此项 success:function(data) { //此处写入发送成功后要处理的代码,而参数里的这个data,就是请求成功后返回来的上面那个格式的JSON,你可以用data[i]的值来取其中一行,如取张三的数据就是 data[0].name,就取出了张三的name属性 所以你可以在这里用循环去处理data,然后将结果用document.write的方式输出来就完成了。 }, error:function(XMLHttpRequest,Error,F) { //出错后可以在这里给出提示,Error参数表示错误信息 }}); 还有弄不清楚的地方可以继续和我探讨。

请问贴吧签到是什么原理啊?为什么这样贴个javascript代码就可以实现签到呢?

网站就是一串代码,所以加段代码,网站的内容就丰富了啊,签到功能就是这个道理

java,web程序设计要学些什么

Java Web程序设计分为5部分共19章,包括入门、JSP编程、Servlet和JavaBean开发、应用开发与框架、其他内容。第1章 Java Web开发环境配置1.1 B/S结构1.2 服务器安装1.2.1 服务器的作用1.2.2 获取服务器软件1.2.3 安装服务器1.2.4 测试服务器1.2.5 配置服务器1.3 IDE安装1.3.1 IDE的作用1.3.2 获取IDE软件1.3.3 安装IDE1.3.4 配置IDE1.4 第一个Web项目1.4.1 创建一个Web项目1.4.2 目录结构1.4.3 部署1.4.4 常见错误1.5 本章总结1.6 上机习题第2章 HTML基础2.1 静态网页制作2.1.1 HTML简介2.1.2 HTML文档的基本结构2.2 HTML中的常见标签2.2.1 文字布局及字体标签2.2.2 列表标签2.3 表格标签2.3.1 表格基本设计2.3.2 合并单元格2.4 链接和图片标签2.5 表单标签2.6 框架2.7 本章总结2.8 上机习题第3章 JavaScript基础3.1 JavaScript简介3.1.1 第一个JavaScript程序3.1.2 JavaScript语法3.2 JavaScript内置对象3.2.1 window对象3.2.2 history对象3.2.3 document对象3.2.4 location对象3.3 本章总结3.4 上机习题第4章 JSP基本语法4.1 第一个JSP页面4.2 注释4.3 JSP表达式4.4.JSP程序段4.5 JSP声明4.6 URL传值4.7 JSP指令和动作4.7.1 JSP指令4.7.2 JSP动作4.8 本章总结4.9 上机习题第5章 表单开发5.1 认识表单5.1.1 表单的作用5.1.2 定义表单5.2 单一表单元素数据的获取5.2.1 获取文本框中的数据5.2.2 获取密码框中的数据5.2.3 获取多行文本框中的数据5.2.4 获取单选按钮中的数据5.2.5 获取下拉菜单中的数据5.3 捆绑表单元素数据的获取5.3.1 获取复选框中的数据5.3.2 获取多选列表框中的数据5.3.3 获取其他同名表单元素中的数据5.4 隐藏表单5.5 其他问题5.5.1 用JavaScript进行提交5.5.2 和文乱码问题5.6 本章总结5.7 上机习题第6章 JSP访问数据库6.1 JDBC简介6.2 建立ODBC数据源6.3 JDBC操作6.3.1 添加数据6.3.2 删除数据6.3.3 修改数据6.3.4 查询数据6.4 使用Prepared Statement6.5 事务6.6 使用厂商驱动进行数据库连接6.7 本章总结6.8 上机习题第7章 JSP内置对象(1)7.1 认识JSP内置对象7.2 out对象7.3 request对象7.4 response对象7.4.1 利用response对象进行重定向7.4.2 利用response设置HTTP头7.5 Cookie操作7.6 本章总结7.7 上机习题第8章 JSP内置对象(2)8.1 利用session开发购物车8.1.1 购物车需求8.1.2 如何用session开发购物车8.2 session其他API8.2.1 session的其他操作8.2.2 SessionId8.2.3 利用session保存登录信息8.3 application对象8.4 其他对象8.5 本章总结8.6 上机习题第9章 Servlet编程9.1 认识Servlet9.2 编写Servlet9.2.1 建立Servlet9.2.2 Servlet运行机制9.3 Servlet生命周期9.4 Servlet与JSP内置对象9.5 设置欢迎页面9.6 在Servletr辛读取参数9.6.1 设置参数9.6.2 获取参数9.7 使用过滤器9.7.1 为什么需要过滤器9.7.2 编写过滤器9.7.3 需要注意的问题9.8 异常处理9.9 本章总结9.10 上机习题第10章 JSP和JavaBean10.1 认识JavaBean10.1.1 编写JavaBean10.1.2 特殊JavaBean属性10.2 在JSP扣使用JavaBean10.3 JavaBean的范围10.4 DAO和VO10.4.1 为什么需要DAO和VO10.4.2 编写DAO和VO……第11章 EL和JSTL第12章 Ajax入门第13章 验证码和文件上传、下载第14章 MVC和Struts基本原则第15章 Struts标签库第16章 Struts资源文件和错误处理第17章 Struts 2基本开发第18章 JSP自定义标签第19章 Web网站安全

请问为什么AJAX在传输数据的时候要使用JSON格式?有什么好处吗?别说规定啊 我想知道原理。

ajax一般用xml,字符串,json三种方式用json,一个结构清晰,二是容易转成对象调用,你可以谷歌一下json格式的好处。。自己查询的更加清晰深刻。

解释jsonp的原理,以及为什么不是真正的ajax

http://blog.csdn.net/u010861514/article/details/46238033jsonp就是ajax,区别就是一个是跨域一个不跨域,还有接收参数形式不一样!

原生js如何实现AJAX、JSONP及DOM加载完成事件

一、JS原生Ajaxajax:一种请求数据的方式,不需要刷新整个页面;ajax的技术核心是 XMLHttpRequest 对象;ajax 请求过程:创建 XMLHttpRequest 对象、连接服务器、发送请求、接收响应数据;下面简单封装一个函数,之后稍作解释 ajax({ url: "./TestXHR.aspx", //请求地址 type: "POST", //请求方式 data: { name: "super", age: 20 }, //请求参数 dataType: "json", success: function (response, xml) { // 此处放成功后执行的代码 }, fail: function (status) { // 此处放失败后执行的代码 } }); function ajax(options) { options = options || {}; options.type = (options.type || "GET").toUpperCase(); options.dataType = options.dataType || "json"; var params = formatParams(options.data); //创建 - 非IE6 - 第一步 if (window.XMLHttpRequest) { var xhr = new XMLHttpRequest(); } else { //IE6及其以下版本浏览器 var xhr = new ActiveXObject("Microsoft.XMLHTTP"); } //接收 - 第三步 xhr.onreadystatechange = function () { if (xhr.readyState == 4) { var status = xhr.status; if (status >= 200 && status < 300) { options.success && options.success(xhr.responseText, xhr.responseXML); } else { options.fail && options.fail(status); } } } //连接 和 发送 - 第二步 if (options.type == "GET") { xhr.open("GET", options.url + "?" + params, true); xhr.send(null); } else if (options.type == "POST") { xhr.open("POST", options.url, true); //设置表单提交时的内容类型 xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); xhr.send(params); } } //格式化参数 function formatParams(data) { var arr = []; for (var name in data) { arr.push(encodeURIComponent(name) + "=" + encodeURIComponent(data[name])); } arr.push(("v=" + Math.random()).replace(".")); return arr.join("&"); }1、创建1.1、IE7及其以上版本中支持原生的 XHR 对象,因此可以直接用: var oAjax = new XMLHttpRequest();1.2、IE6及其之前的版本中,XHR对象是通过MSXML库中的一个ActiveX对象实现的。有的书中细化了IE中此类对象的三种不同版本,即MSXML2.XMLHttp、MSXML2.XMLHttp.3.0 和 MSXML2.XMLHttp.6.0;个人感觉太麻烦,可以直接使用下面的语句创建: var oAjax=new ActiveXObject("Microsoft.XMLHTTP");2、连接和发送2.1、open()函数的三个参数:请求方式、请求地址、是否异步请求(同步请求的情况极少,至今还没用到过);2.2、GET 请求方式是通过URL参数将数据提交到服务器的,POST则是通过将数据作为 send 的参数提交到服务器;2.3、POST 请求中,在发送数据之前,要设置表单提交的内容类型;2.4、提交到服务器的参数必须经过 encodeURIComponent() 方法进行编码,实际上在参数列表”key=value”的形式中,key 和 value 都需要进行编码,因为会包含特殊字符。每次请求的时候都会在参数列表中拼入一个 “v=xx” 的字符串,这样是为了拒绝缓存,每次都直接请求到服务器上。 encodeURI() :用于整个 URI 的编码,不会对本身属于 URI 的特殊字符进行编码,如冒号、正斜杠、问号和井号;其对应的解码函数 decodeURI(); encodeURIComponent() :用于对 URI 中的某一部分进行编码,会对它发现的任何非标准字符进行编码;其对应的解码函数 decodeURIComponent();3、接收3.1、接收到响应后,响应的数据会自动填充XHR对象,相关属性如下 responseText:响应返回的主体内容,为字符串类型; responseXML:如果响应的内容类型是 "text/xml" 或 "application/xml",这个属性中将保存着相应的xml 数据,是 XML 对应的 document 类型; status:响应的HTTP状态码; statusText:HTTP状态的说明;3.2、XHR对象的readyState属性表示请求/响应过程的当前活动阶段,这个属性的值如下 0-未初始化,尚未调用open()方法; 1-启动,调用了open()方法,未调用send()方法; 2-发送,已经调用了send()方法,未接收到响应; 3-接收,已经接收到部分响应数据; 4-完成,已经接收到全部响应数据;只要 readyState 的值变化,就会调用 readystatechange 事件,(其实为了逻辑上通顺,可以把readystatechange放到send之后,因为send时请求服务器,会进行网络通信,需要时间,在send之后指定readystatechange事件处理程序也是可以的,我一般都是这样用,但为了规范和跨浏览器兼容性,还是在open之前进行指定吧)。3.3、在readystatechange事件中,先判断响应是否接收完成,然后判断服务器是否成功处理请求,xhr.status 是状态码,状态码以2开头的都是成功,304表示从缓存中获取,上面的代码在每次请求的时候都加入了随机数,所以不会从缓存中取值,故该状态不需判断。4、ajax请求是不能跨域的!二、JSONPJSONP(JSON with Padding) 是一种跨域请求方式。主要原理是利用了script 标签可以跨域请求的特点,由其 src 属性发送请求到服务器,服务器返回 js 代码,网页端接受响应,然后就直接执行了,这和通过 script 标签引用外部文件的原理是一样的。JSONP由两部分组成:回调函数和数据,回调函数一般是由网页端控制,作为参数发往服务器端,服务器端把该函数和数据拼成字符串返回。比如网页端创建一个 script 标签,并给其 src 赋值为 http://www.superfiresun.com/json/?callback=process, 此时网页端就发起一个请求。服务端将要返回的数据拼好最为函数的参数传入,服务端返回的数据格式类似”process({‘name":"superfiresun"})”,网页端接收到了响应值,因为请求者是 script,所以相当于直接调用 process 方法,并且传入了一个参数。单看响应返回的数据,JSONP 比 ajax 方式就多了一个回调函数。 function jsonp(options) { options = options || {}; if (!options.url || !options.callback) { throw new Error("参数不合法"); } //创建 script 标签并加入到页面中 var callbackName = ("jsonp_" + Math.random()).replace(".", ""); var oHead = document.getElementsByTagName("head")[0]; options.data[options.callback] = callbackName; var params = formatParams(options.data); var oS = document.createElement("script"); oHead.appendChild(oS); //创建jsonp回调函数 window[callbackName] = function (json) { oHead.removeChild(oS); clearTimeout(oS.timer); window[callbackName] = null; options.success && options.success(json); }; //发送请求 oS.src = options.url + "?" + params; //超时处理 if (options.time) { oS.timer = setTimeout(function () { window[callbackName] = null; oHead.removeChild(oS); options.fail && options.fail({ message: "超时" }); }, time); } }; //格式化参数 function formatParams(data) { var arr = []; for (var name in data) { arr.push(encodeURIComponent(name) + "=" + encodeURIComponent(data[i])); } return arr.join("&"); }1、因为 script 标签的 src 属性只在第一次设置的时候起作用,导致 script 标签没法重用,所以每次完成操作之后要移除;2、JSONP这种请求方式中,参数依旧需要编码;3、如果不设置超时,就无法得知此次请求是成功还是失败;三、模仿JQuery中的ready()事件1、DOMContentLoaded事件,在DOM树加载完成之后立即执行,始终会在load之前执行。 IE9+、FF、Chrome、Safari3.1+和Opera9+都支持该事件。 对于不支持该事件的浏览器,可以使用如下代码:setTimeout(function(){// 代码块}, 0) ; DOMContentLoaded 事件只能通过 DOM2 级方式添加,即采用addEventListener()/attachEvent() 方式添加才能够使用。事件对象不会提供任何额外信息。2、readystatechange事件 IE为DOM文档中的某些部分(区别于 XHR 对象的 readystatechange 事件)提供了该事件,这个事件的目的是提供与文档或元素的加载状态有关的信息,但这个事件的行为有时候也很难预料。支持该事件的对象都有一个readyState属性,注意,不是 event 事件对象。IE、Firefox4+和Opera 支持该事件。readyState属性的值如下: “uninitialized” - 未初始化:对象存在但尚未初始化; “loading” - 正在加载:对象正在加载数据; “loaded” - 加载完毕,对象加载数据完毕; “interactive” - 交互:可以操作对象了,但还没有完全加载; “complete” - 完成:对象已经加载完成;2.1、并非所有的对象都会经历readyState的这几个阶段,如果这个阶段不适用某个对象,则该对象完全可能跳过该阶段,并没有规定哪个阶段适用于哪个对象。这意味着 readystatechange 事件经常会少于4次,相对应的 readyState 属性值也不是连续的。2.2、对于 document 而言,interactive 和 complete 阶段会在于 DOMContentLoaded 大致相同的时刻触发 readystatechange 事件;load 事件和 readystatechange 事件的触发顺序会因页面的外部资源的多少而变化,也就是说,readystatechange 事件并不会一直在 load 事件之前执行。外部资源越多,对 readystatechange 事件就越有利。interactive 和 complete 的顺序也是不一致的,谁都有可能先执行,引用的外部资源越多,对交互阶段越有利。所以为了尽可能早的执行代码,两个状态要同时判断。3、doScroll IE5.5+支持,当页面中有滚动条时,可以用 doScroll("right")/doScroll("down") 等来移动滚动条,这个方法只有等DOM加载完成以后才能用,所以在IE低版本浏览器中可以通过这个属性判断 DOM 结构是否加载完成。介绍这个属性主要是模仿 jquery 中的解决方案。function ready(readyFn) { //非IE浏览器 if (document.addEventListener) { document.addEventListener("DOMContentLoaded", function () { readyFn && readyFn(); }, false); } else { //方案1和2 哪个快用哪一个 var bReady = false; //方案1 document.attachEvent("onreadystatechange", function () { if (bReady) { return; } if (document.readyState == "complete" || document.readyState == "interactive") { bReady = true; readyFn && readyFn(); }; }); //方案2 //jquery也会担心doScroll会在iframe内失效,此处是判断当前页是否被放在了iframe里 if (!window.frameElement) { setTimeout(checkDoScroll, 1); } function checkDoScroll() { try { document.documentElement.doScroll("left"); if (bReady) { return; } bReady = true; readyFn && readyFn(); } catch (e) { // 不断检查 doScroll 是否可用 - DOM结构是否加载完成 setTimeout(checkDoScroll, 1); } }; } };注:setTimeout(checkDoScroll, 1); 目的是让浏览器尽快执行 checkDoScroll 函数,间隔时间设置为 1ms,对当下的浏览器来说是不太可能的。每个浏览器都有自己默认的最小间隔时间,即使时间设置为最小间隔时间,也只是代表隔这些时间过去之后,JavaScript 会把 checkDoScroll 加入到执行队列中,如果此时 JavaScript 进程空闲,则会立即执行该代码。

AJAX的常用语法是什么

我们都知道, ajax目前已经是一门很普遍的技术了,本文主要介绍了原生JS中的ajax的实现原理以及XMLHttpRequest及promise的概念和流程。Ajax是目前很普遍的一门技术,也是很值得探讨和研究的一门技术。本文将针对Ajax的发展过程并结合其在不同库框架中的使用方式来和大家分享下Ajax的那些新老语法。Ajax简介Ajax全称为“Asynchronous Javascript And XML”, 即“异步JavaScript和XML”的意思。通过Ajax我们可以向服务器发送请,在不阻塞页面的情况下进行数据交互,也可以理解为异步数据传输。在Ajax的帮助下我们的网页只需局部刷新即可更新数据的显示,减少了不必要的数据量,大大提高了用户体验,缩短了用户等待的时间,使得web应用程序更小、更快,更友好。当然以上都是司空见惯的内容了,作为一名合格的开发人员基本都再熟悉不过了,这里只为那些刚入门的新手做一个简单的介绍。原生Ajax基本上所有现代的浏览器都支持原生Ajax的功能,下面就来详细介绍下利用原生JS我们怎样来发起和处理Ajax请求。获取XMLHttpRequest对象var xhr = new XMLHttpRequest(); // 获取浏览器内置的XMLHttpRequest对象如果你的项目应用不考虑低版本IE,那么可以直接用上面的方法,所有现代浏览器 (Firefox、Chrome、Safari 以及 Opera) 都内建了 XMLHttpRequest 对象。如果需要兼容老版本IE(IE5、IE6),那么可以使用 ActiveX 对象:var xhr;if (window.XMLHttpRequest) { xhr=new XMLHttpRequest();} else if (window.ActiveXObject) { // 兼容老版本浏览器 xhr=new ActiveXObject("Microsoft.XMLHTTP");}参数配置有了XMLHttpRequest对象,我们还需要配置一些请求的参数信息来完成数据交互,利用open方法即可:var xhr;if (window.XMLHttpRequest) { xhr=new XMLHttpRequest();} else if (window.ActiveXObject) { xhr=new ActiveXObject("Microsoft.XMLHTTP");}if (xhr) { xhr.open("GET", "/test/", true); // 以GET请求的方式向"/test/"路径发送异步请求}open方法为我们创建了一个新的http请求,其中第一个参数为请求方式,一般为"GET"或"POST";第二个参数为请求url;第三个参数为是否异步,默认为true。发送请求配置完了基本参数信息,我们直接调用send方法发送请求,代码如下:var xhr;if (window.XMLHttpRequest) { xhr=new XMLHttpRequest();} else if (window.ActiveXObject) { xhr=new ActiveXObject("Microsoft.XMLHTTP");}if (xhr) { xhr.open("GET", "/test/", true); xhr.send(); // 调用send方法发送请求}这里需要注意的是如果使用GET方法传递参数,我们可以直接将参数放在url后面,比如"/test/?name=luozh&size=12";如果使用POST方法,那么我们的参数需要写在send方法里,如:xhr.open("POST", "/test/", true);xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded"); // 将请求头设置为表单方式提交xhr.send("name=luozh&size=12");最终会以Form Data的形式传递:如果不设置请求头,原生Ajax会默认使用Content-Type是"text/plain;charset=UTF-8"的方式发送数据,如果按照上面的参数书写形式,我们最终传输的形式这样的:显然这并不是服务器期望的数据格式,我们可以这样写:xhr.open("POST", "/test/", true);xhr.send(JSON.stringify({name: "luozh", size: 12}));这样我们可以直接传递JSON字符串给后台处理,当然后台也许进行相应配置。监测状态发送完Ajax请求之后,我们需要针对服务器返回的状态进行监测并进行相应的处理,这里我们需要使用onreadystatechange方法,代码如下:var xhr;if (window.XMLHttpRequest) { xhr=new XMLHttpRequest();} else if (window.ActiveXObject) { xhr=new ActiveXObject("Microsoft.XMLHTTP");}if (xhr) { xhr.open("GET", "/test/", true); // 以GET请求的方式向"/test/"路径发送异步请求 xhr.send(); xhr.onreadystatechange = function () { // 利用onreadystatechange监测状态 if (xhr.readyState === 4) { // readyState为4表示请求响应完成 if (xhr.status === 200) { // status为200表示请求成功 console.log("执行成功"); } else { console.log("执行出错"); } } }}上面我们利用onreadystatechange监测状态,并在内部利用readyState获取当前的状态。readyState一共有5个阶段,当其为4时表示响应内容解析完成,可以在客户端调用了。当readyState为4时,我们又通过status来获取状态码,状态码为200时执行成功代码,否则执行出错代码。当然我们可以用onload来代替onreadystatechange等于4的情况,因为onload只在状态为4的时候才被调用,代码如下xhr.onload = function () { // 调用onload if (xhr.status === 200) { // status为200表示请求成功 console.log("执行成功"); } else { console.log("执行出错"); } }然而需要注意的是,IE对onload这个属性的支持并不友好。 除了onload还有:1.onloadstart2.onprogress3.onabort4.ontimeout5.onerror6.onloadend等事件,有兴趣的同学可以亲自去实践它们的用处。以上便是原生Ajax请求数据的常见代码。其他库框架中的AjaxjQuery中的AjaxjQuery作为一个使用人数最多的库,其Ajax很好的封装了原生Ajax的代码,在兼容性和易用性方面都做了很大的提高,让Ajax的调用变得非常简单。下面便是一段简单的jQuery的Ajax代码:$.ajax({ method: "GET", // 1.9.0本版前用"type" url: "/test/", dataType: "json"}).done(function() { console.log("执行成功");}).fail(function() { console.log("执行出错");})与原生Ajax不同的是,jQuery中默认的Content-type是"application/x-www-form-urlencoded; charset=UTF-8", 想了解更多的jQuery Ajax的信息可以移步官方文档:http://api.jquery.com/jquery.ajax/Vue.js中的AjaxVue.js作为目前热门的前端框架,其实其本身并不包含Ajax功能,而是通过插件的形式额外需要在项目中引用,其官方推荐Ajax插件为vue-resource,下面便是vue-resource的请求代码:Vue.http.get("/test/").then((response) => { console.log("执行成功");}, (response) => { console.log("执行出错");});3.Angular.js中的Ajax这里Angular.js中的Ajax主要指Angular的1.×版本,因为Angular2目前还不建议在生产环境中使用。var myApp = angular.module("myApp",[]);var myCtrl = myApp.controller("myCtrl",["$scope","$http",function($scope, $http){ $http({ method: "GET", url: "/test/", headers: {"Content-Type": "application/x-www-form-urlencoded; charset=UTF-8"} }).success(function (data) { console.log("执行成功"); }).error(function () { console.log("执行出错"); });}]);在Angular中,我们需要在控制器上注册一个$http的事件,然后才能在内部执行Ajax。Angular的Ajax默认的Content-type是"application/json;charset=UTF-8",所以如果想用表单的方式提交还需设置下headers属性。4.React中的Ajax在React中我比较推荐使用fetch来请求数据,当然其不仅适用于React,在任何一种框架如上面的Vue、Angular中都可以使用,因为其已经被目前主流浏览器所支持,至于其主要功能和用法,我在下面会做下讲解。Fetch APIFetch API 是基于 Promise 设计,由于Promise的浏览器兼容性问题及Fetch API本身的兼容问题,一些浏览器暂时不支持Fetch API,浏览器兼容图如下:当然我们可以通过使用一些插件来解决兼容性问题,比如:fetch-polyfill、es6-promise、fetch-ie8等。使用Fetch我们可以非常便捷的编写Ajax请求,我们用原生的XMLHttpRequst对象和Fetch来比较一下:XMLHttpRequst API// XMLHttpRequst APIvar xhr = new XMLHttpRequest();xhr.open("GET", "/test/", true);xhr.onload = function() { console.log("执行成功");};xhr.onerror = function() { console.log("执行出错");};xhr.send();Fetch API fetch("/test/").then(function(response) { return response.json();}).then(function(data) { console.log("执行成功");}).catch(function(e) { console.log("执行出错");});可以看出使用Fetch后我们的代码更加简洁和语义化,链式调用的方式也使其更加流畅和清晰。随着浏览器内核的不断完善,今后的XMLHttpRequest会逐渐被Fetch替代。关于Fetch的详细介绍可以移步:https://segmentfault.com/a/1190000003810652跨域Ajax介绍了各种各样的Ajax API,我们不能避免的一个重要问题就是跨域,这里重点讲解下Ajax跨域的处理方式。处理Ajax跨域问题主要有以下4种方式:1.利用iframe2.利用JSONP3.利用代理4.利用HTML5提供的XMLHttpRequest Level2第1和第2种方式大家应该都非常熟悉,都属于前端的活,这里就不做介绍了,这里主要介绍第3和第4种方式。利用代理的方式可以这样理解:通过在同域名下的web服务器端创建一个代理:北京服务器(域名:www.beijing.com)上海服务器(域名:www.shanghai.com)比如在北京的web服务器的后台(www.beijing.com/proxy-shanghaiservice.php)来调用上海服务器(www.shanghai.com/services.php)的服务,然后再把访问结果返回给前端,这样前端调用北京同域名的服务就和调用上海的服务效果相同了。利用XMLHttpRequest Level2的方式需要后台将请求头进行相应配置:// php语法header("Access-Control-Allow-Origin: *");header("Access-Control-Allow-Methods: GET,POST");以上的*号可以替换成允许访问的域名,*表示所有域名都可以访问。由此可见,第3和第4种方式主要是后台的活,前端只需调用就可以。总结无论Ajax的语法多么多变,无论库和框架如何封装Ajax,其只是一种实现异步数据交互的工具,我们只需理解原生JS中Ajax的实现原理,了解XMLHttpRequest及promise的概念和流程,便可以轻松的在数据异步交互的时代游刃有余。相信看了这些案例你已经掌握了方法,更多精彩请关注Gxl网其它相关文章!相关阅读:CSS的文本字体颜色如何设置css里的font文字怎么设置 Css3中的transform 渐变属性怎么使用

ajax 实现一个请求,请求进度百分比计算的原理是什么。

ajax.process,貌似只有jquery的xhr对象才有

求一篇关于Javascript课程的学期结课论文

论AJAX技术及应用[论文关键词]Ajax JavaScript DHtml Web2.0   [论文摘要]Ajax是Web2.0的核心之一,它采用异步模式,可以开发出基于浏览器的具有高用户交互性的web应用,改变了传统Web应用的交互模式,从而可以构建出更为动态、响应更灵敏和用户体验更好的Web应用程序。   一、Ajax技术简介   AJAX全称为“Asynchronous JavaScript and XML”(异步JavaScript   和XML),是指一种创建交互式网页应用的网页开发技术。Ajax运用的了如下的一些基本技术:   HTML:用于建立Web表单并构建Web应用界面;JavaScript:Ajax 技术的核心,帮助改进与服务器应用程序的通信;DHTML(Dynamic HTML):用于动态更新表单。通常使用div、span和其他动态HTML元素来标记HTML;文档对象模型DOM:用于(通过JavaScript代码)处理 HTML 结构。      二、Ajax原理   在传统的Web 应用程序中,交互的一般流程是:用户填写表单字段并单击提交按钮,整个表单发送到服务器,通过服务器端不同的技术(如PHP、JSP等)进行处理,然后再将处理结果以全新的页面发送回客户端。在用户提交后等待处理时,屏幕变成一片空白,用户得不到立即反馈。   Ajax的核心是JavaScript对象XmlHttpRequest。该对象在Internet Explorer 5中首次引入,它是一种支持异步请求的技术。简而言之,XmlHttpRequest使您可以使用JavaScript向服务器提出请求并处理响应,而不阻塞用户。也就是说当用户提交表单时,数据发送给一些JavaScript   代码而不是直接发送给服务器。而JavaScript代码捕获表单数据并向服务器发送请求,即JavaScript 代码在幕后发送请求,用户甚至不知道请求的发出,并且请求是异步发送的,就是说JavaScript代码(和用户)不用等待服务器的响应。在JavaScript代码和服务器进行交互时,用户仍然可以继续输入数据、滚动屏幕和使用应用程序。在服务器处理完毕后将数据返回JavaScript代码(仍然在Web表单中),然后使用DOM技术迅速更新表单数据,让用户感觉应用程序是立即完成的,表单没有提交或刷新而用户得到了新数据。JavaScript代码甚至可以对收到的数据执行某种计算,再发送另一个请求,完全不需要用户干预,甚至完全不知道幕后发生的一切,从而极大的提升了用户体验。      三、Ajax应用   现以修改用户的登录名的例子来讲述AJAX在实际中的应用,该实例可以推广到网页中任何文本内容的动态修改。   (一)创建XMLHttpRequest对象,为了使代码同时支持Internet Explorer和非Microsoft浏览器,使用如下代码   var xmlHttp = false;   try {   xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");   } catch (e) {   try {   xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");   }catch (e2) {   xmlHttp = false;   }   if (!xmlHttp && typeof XMLHttpRequest != "undefined") {   xmlHttp = new XMLHttpRequest();   }   在创建XMLHttpRequest对象之后,就可以结合JavaScript代码完成以下工作:从 Web 表单中获取数据->打开到服务器的连接->设置服务器处理完成后的响应函数,这也是Ajax工作的一般流程(二)定义获取表单数据及更改表单的JavaScript代码   function changeToInput(id) {    var oNP = document.getElementById(id);//从表单中获取数据    var value = oNP.value;    oNP.outerHTML = "<input type="text" id="" + id + "" value="" + value + "" size="5" onblur="change(this.id)">"接后文

ajax jsonData 怎么传两个json 格式的数据吗

啊嘎嘎谁是哥哥哥哥

java主要是学习什么啊?

说一下流程:Java基础语法、数组、类与对象、继承与多态、异常、范型、集合、流与文件、反射、枚举、自动装箱和注解。数据库的话,可以去学习一种数据库,把它学精通,能力强也可以学习多种数据库,如:mysql,oracle;java web :HTML与CSS网页开发基础、JavaScript脚本语言、搭建开发环境、JSP基本语法、JSP内置对象、JavaBean技术、Servlet技术、Ajax技术;企业级框架:Struts2、Hibernate、Spring、SpringMVC、mybatis,spring boot,spring cloud等,也可以根据企业流行的要求去学习,至少要三种左右;之后就是进阶了:架构、高并发高可用、设计思路、消息队列、日志、路由等等;对Java编程感兴趣,可以看我主页,一起交流学习。

JAVA软件工程师是做什么的?

什么是Java? Java好象随处可见 - 甚至在TV中。尽管如此,说清楚Java是什 么和它能做什么却不那么容易。刚开始接触Java的人通常有三 个问题: 什么是Java? Java能做什么? Java怎样改变我的生活? 让我们先回答第一个问题:什么是Java? Java既是一种编程语言,又是一个平台。 Java程序语言 Java是具有以下特征的高级程序语言: 简单 面向对象 可分布 可解释 强壮 安全性 结构化 轻便 功能强大 多线程 动态 Java既可以被编译,也可以被解释。通过编译器,可以把Java 程序翻译成一种中间代码 - 称为字节码 - 可以被Java解释器 解释的独立于平台的代码。通过解释器,每条Java字节指令被 分析,然后在计算机上运行。只需编译一次,程序运行时解释 执行。
 首页 上一页  10 11 12 13 14 15 16 17 18 19 20  下一页  尾页