前言

主要谈谈Ajax以及jQuery对Ajax的支持

Ajax(Asynchronous javascript and xml)以异步地方式实现局部HTML的刷新。创建交互式web应用程序而无需牺牲浏览器兼容性的流行方法。

正文

设置获得的标签体

动态绑定事件

方式一

方式二

例子

示例二//当选中的二级菜单为无的时候,使第三级菜单的文本框不可编辑



示例三 :在修改页面,保持一级菜单不可变,二级菜单的默认值为数据库的值;当选中的二级菜单为无的时候,使第三级菜单的文本框不可编辑

1.对应的js
2.例子三对应的jsp







例子四:从显示列表中,获取原先设置在单选按钮的值




Ajax

1.Ajax是一种在2005年由Google推广开来的编程模式,是一种使用现有标准的新方法通过Ajax,可以创建更好、更快以及更友好的web应用程序。

2.Ajax基于javascript和HTTP请求

3.。通过Ajax您的javascript可以使用javascript的xmlHttpRequest对象来直接与服务器进行通信。通过这个对象,您的javascript可在不重新加载页面的情况与web服务器交换数据。

4.Ajax在浏览器与web服务器之间使用异步数据传输,这样可使网页从服务器请求少量的信息,而非整个页面。


1.ajax


synchronous javascript and xml,为解决传统的web中,"提交--等待---提交"的模式而产生的 技术。其本质就是用javascript获取浏览器里面的一个特殊的内置对象(XmlHttpRequest),给服务器
异步发送请求,服务器会返回xml和文本数据给XmlHttpRequest,然后,通过javascript调用 XmlHttpRequest对象中数据更新页面,在整个过程中,页面无刷新。


2.ajax编程


step1 获取XmlHttpRequest对象
在ie中获取和其他的浏览器不一样,其他浏览器都是通过new XMLHttpRequest()来获取,ie 中是这样来获取 new ActiveXObject()。
function getXmlHttpRequest(){
var xmlHttpRequest=null;
if((typeof XMLHttpRequest)!='undefined'){
xmlHttpRequest=new XMLHttpRequest();
}else{
xmlHttpRequest=new ActiveXObject("Microsoft.XMLHttp");
}
return xmlHttpRequest;
}

step2 使用XmlHttpRequest发送请求
1)发送get请求
var url="some.do?name=zs";
xhr.open("get",url,true);
get:请求的方式
url:请求的地址,可以接上参数
true:异步请求
//注册监听器
xhr.onreadystatechange=f1;
//发送请求,真正的发送请求
xhr.send(null);

2)发送post请求
var url="some.do";
xhr.open("post",true);
//设置消息头
xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xhr.onreadystatechange=f1;
xhr.send("name=zs");
step3 服务器处理请求,返回响应
step4 在监听器处理服务器的响应
function f1(){
//处理相关的代码
}
xhr.onreadystatechange=f1;
xhr.onreadystatechange=function(){
if(xhr.readyState==4){
//获取文本数据
var txt=xhr.responseText;
//获取XML DOM对象
var xml=xhr.responseXml;
// dom 操作 更新页面数据
}
}

例子:检查用户是否可用

例子一,异步地情况

1.jsp页面

注:jQuery对Ajax的支持

2.servelet

例子二:同步的情况
jsp页面
Servlet代码
<div></div>


3.XmlHttpRequest对象


readyState属性:XmlHttpRequest与服务器通讯的状态。
0(创建完毕) :XmlHttpRequest对象已经创建好,但没有调用open方法。
1(初始化):XmlHttpRequest没有调用send()方法。
2(发送):XmlHttpRequest开始发送数据给服务器。
3(获取数据):XmlHttpRequest,正获取服务器返回的数据
4(获取数据完毕):此时,可以通过XmlHttpRequest获得服务器返回的所有数据。


reponseText属性:服务器返回的文本。
responseXML属性:服务器返回的xml数据。
onreadystatechange属性:用来设置回调函数,即处理服务器返回的数据。
status属性:服务器返回的状态码,(200,500,404)



4.缓存问题


在ie浏览器中,如果请求是get方式的请求,ie浏览器会将 请求的数据缓存起来,如果下次访问,地址没变,ie浏览器 就不会发送真正的请求,会将缓存的数据显示给用户。
解决方式:
1.可以在地址后面加上一个随机数。
2.使用post方式发送请求。



5.编码问题


1).在浏览器中,如果请求方式post,浏览器是会utf-8对数据进行编码。
2).在浏览器中,如果请求方式get,ie使用的"gbk/gb2312" 对中文进行编码,
firefox使用utf-8。


解决编码问题:
step1. 修改tomca中的server.xml .
添加URIEcoding="utf-8",
对get请求使用utf-8进行编码
step2. 对请求的地址使用 encodeURI()函数,
对地址中中文使用utf-8编码



6.prototype


$(id) : document.getElementById(id);
$F(id): document.getElementById(id).value;
$(id1,id2.....) 获取多个对象,返回一个数组
evalJSON:将符合JSON格式的字符串,转换成JS对象。


7.JSON


javascript tonation object,是一种轻量级的数据交换的格式, 主要用来在服务器和js之间交换数据。


1).JSON中表示对象
a.表示一个对象
var obj={'属性':'属性值','属性':'属性值','属性':'属性值'....}
属性要加上引号。
属性值如果是字符串要加上引号。
属性值的类型:string,number,null、object、boolean
b.表示一个数组
var arr=[{},{},{}]
2).将java对象转换成JSON格式的字符串
a.转换一个对象
JSONObject jobj=JSONObject.fromObject(obj);
jobj.toString();
b.转换数组或集合
JSONArray arr=JSONArray.fromObject(stus);
arr.toString();


注册页面检查用户是否可用和城市下拉框的级联

1.Webroob目录下的注册页面regist.jsp

2.WEB-INF 目录下的web.xml
3.lib目录下的jar包名称

json-lib-2.2.3-jdk15.jar

4.src目录下得实体类Option.java

5.src目录下的Servlet

ActionServlet.java

jQuery对于Ajax的支持

$.get(url,回调函数,数据类型);

$.post(url,数据,回调函数,数据类型);

传递json数据

json={属性名:属性值,属性名:属性值};

例子:下拉框的级联

jsp页面

Servlet代码

注:图层的设置

样式:z-index:正数;//500为分界线 设置图层

js对象:div.style.zindex=正数

mybg.style.filter='"Alpha(opacity=30)";//设置透明度

mybg.style.overflow='hidden';

总结

知识回顾

JQuery 是一种js的框架
类似的框架 ExtJS
框架:程序代码的一种有机组合,是程序开发过程中的一种半成品
依赖库:jquery-1.4.3.js
语法:
$( )

选择器
基本选择器

id选择器
$("#id值")

标签选择器
$("标签名称")

Class选择器
$(".class值")

群组选择器
$("标签名称1,标签名称2");

包含选择器
$("标签名称1 标签名称2");

表单选择器
$(":input") 选出所有的input标签
:text 选出input标签中type为text的所有标签
:password
:button
:radio
:reset
:checkBox
:hidden
:submit
:image
:file

条件限定选择器
基本条件限定
:first
:last
:lt(下标)
:gt(下标)
:odd 奇数,下标从0开始
:even 偶数,下标从0开始
:eq(下标)
:not(选择器) 取反,去除选择器中选中的

内容限定
:contains(字符) 选中含有某个字符的标签
:parent 是否含有子标签
:empty
:has(选择器) 选中含有某个子标签的父标签

属性限定
[属性名称] 选出含有此属性的所有标签
[属性名=属性值]

可见性限定
:visible 选出可见的
:hidden 选出隐藏的

选中限定
:checked
:selected

子标签的限定
:first-child
:last-child
:nth-child(表达式)


DOM
获取标签
$(选择器);
创建标签对象
$("标签"); 任何JQuery API返回的都是JQuery对象
插入标签
父标签.append("子标签") 追加子标签
父标签.prepend("子标签") 在最前面插入子标签
标签.before("标签");
标签.after("标签");
子标签.appendTo("父标签选择器") 将子标签追加到对应的父标签
删除标签
标签.remove(选择器) 删除特定标签
标签.remove() 删除标签
标签.empty() 删除所有内容
获得添加属性
属性值 = 标签.attr(属性名)
标签.attr("属性名","属性值")
标签.attr({"属性名","属性值","属性名","属性值"});
改变样式
标签.css("样式属性名称","样式值")
标签.css({样式属性名称:"样式值",样式属性名称:"样式值"});
标签.addClass("class值");
标签.removeClass("class选择器的值");
动画效果
show(fast/slow/数字);
hide();

fadeIn(fast/slow/数字); 淡入淡出
fadeOut();
设置获得标签体
var xx = 标签.html()
标签.html("内容")
var val =标签.text()
标签.text("文本");

动态绑定事件
1.$(document).ready(function事件); HTML文档加载完成之后执行Ready中绑定的事件

$(document).ready(function(){
//获得事件发生的标签
$("#span2").bind("mouSEOver",function(){

alert("hello");
});

});

$(document).ready(function(){

$("#span2").mouSEOver(function(){
alert("aaaaa");
});
});


2.$(function(){
function事件
});


$(function(){

$("#span2").mouSEOver(function(){

alert("aaa");
});

});

JQuery对于Ajax的支持
$.get(url,回调函数,数据类型)
$.post(url,数据,数据类型)
$.ajax();


$(function(){

$(":text:first").blur(function(){
var val = $(":text:first").attr("value");
var url = "http://localhost:8899/helloJSP129/as?name="+val;
$.get(url,function(data){
$("#span1").html(data);
});
//$.post(url,{ name: "John",time: "2pm" } );
});

});

传递Json数据
json = {属性名:属性值,属性名:属性值}
$(function(){
$("select:first").change(function(){
var val = $("select option:selected").attr("value");
$.get("http://localhost:8899/helloJSP129/js?country="+val,function(data){ //将json字符串转成json对象,获得json对象数组 var jsons = eval("("+data+")"); //获得最后一个select,将jquery对象转换成js对象 //var sel = $("select:last").get(0); var sel = $("select:last"); sel.empty(); for(var i=0;i<jsons.length;i++){ sel.append("<option value='"+jsons[i].id+"'>"+jsons[i].name+"</option>"); } }); }); });

设置获得的标签体、动态绑定事件以及Ajax的更多相关文章

  1. 应用程序关闭时的iOS任务

    我正在构建一个应用程序,通过ajax将文件上传到服务器.问题是用户很可能有时不会有互联网连接,并且客户希望在用户重新连接时安排ajax调用.这可能是用户在离线时安排文件上传并关闭应用程序.应用程序关闭时可以进行ajax调用吗?

  2. android – Phonegap本地构建 – jquery ajax错误:readystate 0 responsetext status 0 statustext error

    解决方法您是否在索引文件中包含了内容安全元标记?

  3. Ajax简单的异步交互及Ajax原生编写

    一提到异步交互大家就会说ajax,仿佛ajax这个技术已经成为了异步交互的代名词.那下面将研究ajax的核心对象

  4. Ajax跨域问题的解决办法汇总(推荐)

    本文给大家分享多种方法解决Ajax跨域问题,非常不错具有参考借鉴价值,感兴趣的朋友一起学习吧

  5. ajax编写简单的登录页面

    这篇文章主要为大家详细介绍了ajax编写简单登录页面的具体代码,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  6. ajax从JSP传递对象数组到后台的方法

    今天小编就为大家分享一篇ajax从JSP传递对象数组到后台的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

  7. 解决ajax返回验证的时候总是弹出error错误的方法

    这篇文章主要介绍了解决ajax返回验证的时候总是弹出error错误的方法,感兴趣的小伙伴们可以参考一下

  8. 使用AJAX完成用户名是否存在异步校验

    这篇文章主要介绍了使用AJAX完成用户名是否存在异步校验的相关资料,需要的朋友可以参考下

  9. ajax实现无刷新省市县三级联动

    这篇文章主要为大家详细介绍了ajax实现无刷新省市县三级联动的相关资料,利用三层架构实现,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  10. jQuery Ajax 实现分页 kkpager插件实例代码

    本文通过实例代码给大家讲解了jQuery Ajax 实现分页 kkpager插件功能,需要的的朋友参考下吧

随机推荐

  1. xe-ajax-mock 前端虚拟服务

    最新版本见Github,点击查看历史版本基于XEAjax扩展的Mock虚拟服务插件;对于前后端分离的开发模式,ajax+mock使前端不再依赖后端接口开发效率更高。CDN使用script方式安装,XEAjaxMock会定义为全局变量生产环境请使用xe-ajax-mock.min.js,更小的压缩版本,可以带来更快的速度体验。

  2. vue 使用 xe-ajax

    安装完成后自动挂载在vue实例this.$ajaxCDN安装使用script方式安装,VXEAjax会定义为全局变量生产环境请使用vxe-ajax.min.js,更小的压缩版本,可以带来更快的速度体验。cdnjs获取最新版本点击浏览已发布的所有npm包源码unpkg获取最新版本点击浏览已发布的所有npm包源码AMD安装require.js安装示例ES6Module安装通过Vue.use()来全局安装示例./Home.vue

  3. AJAX POST数据中文乱码解决

    前端使用encodeURI进行编码后台java.net.URLDecoder进行解码编解码工具

  4. Koa2框架利用CORS完成跨域ajax请求

    实现跨域ajax请求的方式有很多,其中一个是利用CORS,而这个方法关键是在服务器端进行配置。本文仅对能够完成正常跨域ajax响应的,最基本的配置进行说明。这样OPTIONS请求就能够通过了。至此为止,相当于仅仅完成了预检,还没发送真正的请求呢。

  5. form提交时,ajax上传文件并更新到&lt;input&gt;中的value字段

  6. ajax的cache作用

    filePath="+escape;},error:{alert;}});解决方案:1.加cache:false2.url加随机数正常代码:网上高人解读:cache的作用就是第一次请求完毕之后,如果再次去请求,可以直接从缓存里面读取而不是再到服务器端读取。

  7. 浅谈ajax上传文件属性contentType = false

    默认值为contentType="application/x-www-form-urlencoded".在默认情况下,内容编码类型满足大多数情况。在这里,我们主要谈谈contentType=false.在使用ajax上传文件时:在其中先封装了一个formData对象,然后使用post方法将文件传给服务器。说到这,我们发现在JQueryajax()方法中我们使contentType=false,这不是冲突了吗?这就是因为当我们在form标签中设置了enctype=“multipart/form-data”,

  8. 909422229_ajaxFileUpload上传文件

    ajaxFileUpload.js很多同名的,因为做出来一个很容易。我上github搜AjaxFileUpload出来很多类似js。ajaxFileUpload是一个异步上传文件的jQuery插件传一个不知道什么版本的上来,以后不用到处找了。语法:$.ajaxFileUploadoptions参数说明:1、url上传处理程序地址。2,fileElementId需要上传的文件域的ID,即的ID。3,secureuri是否启用安全提交,默认为false。4,dataType服务器返回的数据类型。6,error

  9. AJAX-Cache:一款好用的Ajax缓存插件

    原文链接AJAX-Cache是什么Ajax是前端开发必不可少的数据获取手段,在频繁的异步请求业务中,我们往往需要利用“缓存”提升界面响应速度,减少网络资源占用。AJAX-Cache是一款jQuery缓存插件,可以为$.ajax()方法扩展缓存功能。

  10. jsf – Ajax update/render在已渲染属性的组件上不起作用

    我试图ajax更新一个有条件渲染的组件。我可以确保#{user}实际上是可用的。这是怎么引起的,我该如何解决呢?必须始终在ajax可以重新呈现之前呈现组件。Ajax正在使用JavaScriptdocument.getElementById()来查找需要更新的组件。但是如果JSF没有将组件放在第一位,那么JavaScript找不到要更新的内容。解决方案是简单地引用总是渲染的父组件。

返回
顶部