jQuery(7)——jQuery与Ajax的应用

---恢复内容开始---

jQuery与Ajax的应用

【Ajax的优势和不足】

优势

(1)不需要插件支持;

(2)优秀的用户体验;

(3)提高Web程序的性能;

(4)减轻服务器和宽带的负担;

不足

(1)浏览器对XMLHttpRequest对象的支持度不足;

(2)破坏浏览器前进、“后退”按钮的正常功能;

(3)对搜索引擎的支持的不足;

(4)开发和调试工具的缺乏;

【Ajax的XMLHttpRequest对象】

它是Ajax实现的关键——发送异步请求、接收响应及执行回调都是通过它来完成。

安装Web环境——AppServ

【jQuery中的Ajax】

load()方法:能载入远程HTML代码并插入DOM中。结构为:load( url [,data] [,callback])

参数解释:url:string类型,请求HTML页面的URL地址;

     data(可选):object类型,发送至服务器的key/value数据;

     callback(可选):function类型,请求完成时的回调函数,无论请求成功或失败。

载入HTML文档:开发人员只需要使用jQuery选择器为HTML片段指定目标位置,然后将要加载的文件的URL作为参数传给load()方法即可。主页面的样式会立即应用到新加载的内容上。

筛选载入的HTML文档:load()方法的URL参数的语法结构为:"url selector"。如:$("#resText").load("test.html .para");

传递方法:根据参数data来自动指定。如果没有参数传递,则采用GET方式传递;反之,则会自动转换成POST方式。

//无参数传递,即GET方式
$("resText").load("test.php",function(){
    //....
});
//有参数传递,即POST方式
$("resText").load("test.php",{name:"rain",age:"22"}.function(){
    //....
});

回调参数:对于必须在加载完成后才能继续的操作,load()方法提供了回调函数(callback),该函数有三个参数,分别代表请求返回的内容、请求状态和XTMLHttpRequest对象

$("resText").load("test.html",function(responseText textStatus XMLHttpRequest){
    //responseText:请求返回的内容
    //textStatus:请求状态:success、error、notmodified、timeout四种
    //XMLHttpRequest:XMLHttpRequest对象
)};

在load()方法中,无论Ajax请求是否成功,只要当请求完成后,回调函数就会被触发。

$.get()方法和$.post()方法

这两个方法是jQuery中的全局函数。可以传递一些参数给服务器中的页面。

$.get()方法:使用GET方法来进行异步请求。结构为:$.get(url [,data] [,callback] [,type])

data(可选):object类型,发送至服务器的key/value数据会作为QueryString附加请求到URL中。

callback(可选):function类型,载入成功时回调函数(只有当Response的返回状态是success才调用该方法)自动将请求结果和状态传递给该方法。

type(可选):string类型,服务器端返回内容的格式,包括xml、html、script、json、text和_default。

(1)使用参数

$("#send").click(function(){
    $.get("get1.php",{
            username:$("#username").val(),
            content:$("#content").val()
    },回调函数);
});

$.get()方法的回调函数只有两个参数,且只有当数据成功返回后才会被调用。代码如下

function(data,textStatus){
    //data:   返回的内容,可以是XML文档、JSON文件、HTML片段等
    //textStatus:    请求状态:success、error、notmodified、timeout四种
}

(2)数据格式:HTML片段、XML文档、JSON文件。

$.post()方法:与$.get()方法结构和使用方法都相同,其不同点:

(1)GET请求会将参数跟在URL后进行传递,而POST请求则是作为HTTP消息的实体内容发送给Web服务器。在Ajax请求中,这种区别对用户不可见。

(2)GET方式对传输的数据大小限制,而POST方式比GET方式大得多。

(3)GET方式请求的数据会被浏览器缓存起来,可以取得浏览器的历史记录,但也具有严重的安全问题。

(4)GET方式和POST方式传递的数据在服务器端的获取不相同。但是两种方式都可以用$_REQUEST[]来获取。

$.getScript()方法和$.geetJson()方法

$.getScript()方法:直接加载.js文件。

$(function(){
    $(‘#send‘).click(function(){
        $getScript(‘test.js‘);
    });
})

$.getScript()方法也有回调函数,会在JavaScript文件成功载入之后运行。

$.geetJson()方法:用于加载JSON文件,与$.getScript()方法用法相同。

$.each()函数:用于遍历对象和数组。是一个全局函数,不操作jQuery对象,而是以一个数组或者对象作为第一个参数,以一个回调函数作为第二个参数。其中回调函数拥有两个参数:第一个是对象成员或数组索引,第二个为对应变量或内容。

$.ajax()方式

结构为:$.ajax(options)。只有一个参数,但在这个对象里包含了$.ajax()方法所需要的请求设置以及回调函数等信息,参数以key/value形式存在,且所有参数都是可选的。

$.ajax()方法是jQuery最底层烦人Ajax实现,因此可以用它来代替前面提及的所有方法。

【序列化元素】

serialize()方法:作用于一个jQuery对象,能将DOM元素内容序列化为字符串,用于Ajax请求。使用该方法可以将以下代码

$("#send").click(function(){
    $.get("get1.php",{
            username:$("#username").val(),
            content:$("#content").val()
    },function(data,textStatus){
        $("#resText").html(data);    //将返回的数据添加到页面上
    });
});

简化为

$("#send").click(function(){
    $.get("get1.php",$("#form1").serialize(),function(data,textStatus){
        $("#resText").html(data);    //将返回的数据添加到页面上
    });
});

serialize()方法在其他选择器选取的元素也都能使用该方法:

serializeArry()方法:将DOM元素序列化后,返回JSON格式的数据。

$(function(){
    var fields=$(":checkbox.:radio").serializeArry();
    console.log(fields);   //用Firebug输出
    $.each(fields,fuction( i , field ){
        $("#results").append(field.value+",");
    });
})

$.param()方法:是serialize()方法的核心,用来对一个数组或对象按照key/value进行序列化。

【jQuery中的Ajax全局事件】

<div id="loading">加载中...</div>

当Ajax请求开始时,将此元素显示,当Ajax请求结束后,将此元素隐藏。

$("#loading").ajaxStart(function(){
    $(this).show();
});
$("#loading").ajaxStop(function(){
    $(this).hide();
});  //也可以用链式写法

如果想使某个Ajax请求不受全局方法的影响,那么可以在使用$.ajax(options)方法时,将参数中的global设置为false。

---恢复内容结束---

时间: 2024-11-03 21:45:01

jQuery(7)——jQuery与Ajax的应用的相关文章

通过jQuery或ScriptManager以Ajax方式访问服务

1.客户端和服务端 服务端对外提供服务时,可以通过handler或者webservice.handler比较轻便,但是难以对外公开,只有程序员自己知道它到底做了些什么工作.webservice可以将服务对外公开,调用也方便,更加专业些.如果不是要公开的接口,handler完全可以胜任了.下面是将webservice发布的效果. 客户端在调用服务端的服务时,最简单的莫过于使用jQuery了.当然微软也提供了ScriptMananger来访问WebService.他们之间的关系可以用下图说明. 2.

JQuery(三) Ajax相关

JQuery大大简化了Ajax通用操作,开发者只需要指定请求URL,回调函数即可. 三个主要方法: $().param(obj):将obj参数(对象或数组)转化成查询字符串. {name:"疯狂Java讲义", price:109}转换出的查询字符串为:name=%E7%96%AF%E7%8B%82Java%E8%AE%B2%E4%B9%89&price=109 serialize():将表单或表单控件转化成查询字符串. user=vince&desc=%E4%BB%8

jQuery:自学笔记(5)——Ajax

jQuery:自学笔记(5)--Ajax 使用Ajax快捷函数 说明 出于简化AJAX开发工作的流程,jQuery提供了若干了快捷函数. 实例 1.显示 test.php 返回值(HTML 或 XML,取决于返回值). $.get("test.php", function(data){   alert("Data Loaded: " + data); }); 2.向页面 test.php 发送数据,并输出结果(HTML 或 XML,取决于所返回的内容): $.pos

[转载]Jquery中$.get(),$.post(),$.ajax(),$.getJSON()的用法总结

本文对Jquery中$.get(),$.post(),$.ajax(),$.getJSON()的用法进行了详细的总结,需要的朋友可以参考下,希望对大家有所帮助. 详细解读Jquery各Ajax函数: $.get(),$.post(),$.ajax(),$.getJSON() 一,$.get(url,[data],[callback]) 说明:url为请求地址,data为请求数据的列表,callback为请求成功后的回调函数,该函数接受两个参数,第一个为服务器返回的数据,第二个参数为服务器的状态,

js day44 Jquery(筛选,事件,效果,Ajax,javascript跨域)

1     筛选[掌握]     筛选与之前"选择器"雷同,筛选提供函数 1.1   过滤 eq(index|-index),获取第N个元素 ?index:一个整数,指示元素基于0的位置,这个元素的位置是从0算起. ?-index:一个整数,指示元素的位置,从集合中的最后一个元素开始倒数.(1算起) first(),获取第一个元素 last(),获取最后个元素 hasClass(class),检查当前的元素是否含有某个特定的类,如果有,则返回true. filter(exp

jQuery与JavaScript与ajax三者的区别与联系

简单总结: 1.JS是一门前端语言. 2.Ajax是一门技术,它提供了异步更新的机制,使用客户端与服务器间交换数据而非整个页面文档,实现页面的局部更新. 3.jQuery是一个框架,它对JS进行了封装,使其更方便使用.jQuery使得JS与Ajax的使用更方便 关系比喻: 若把js比作木头,那么jquery就是木板(半成品) jQuery与ajax都是js的一个框架,各有各的功能,若js是父亲的话,jquery与ajax就是两个儿子 详细情况: 1.javascript是一种在客户端执行的脚本语

从零开始学习jQuery (六) jquery中的AJAX使用

本篇文章讲解如何使用jQuery方便快捷的实现Ajax功能.统一所有开发人员使用Ajax的方式. 一.摘要 本系列文章将带您进入jQuery的精彩世界, 其中有很多作者具体的使用经验和解决方案,  即使你会使用jQuery也能在阅读中发现些许秘籍. 本篇文章讲解如何使用jQuery方便快捷的实现Ajax功能.统一所有开发人员使用Ajax的方式. 二.前言 Ajax让用户页面丰富起来, 增强了用户体验. 使用Ajax是所有Web开发的必修课. 虽然Ajax技术并不复杂, 但是实现方式还是会因为每个

Jquery的DataTable插件 AJAX 服务器分页的的学习心得(java版)

首先得先引入对应的js 1.jquery.min.js  首先导入 2. File:        jquery.dataTables.min.js Version:     1.9.4     这是我使用的版本 这是  jsp 页面 关键的table  代码 <table id="fuck" class="table table-bordered data-table"> <thead> <tr> <span style=

jQuery插件AjaxFileUpload实现ajax文件上传时老是执行error方法 问题原因

今天在用jQuery插件AjaxFileUpload实现ajax文件上传时,遇到一个问题,如图: 老是执行error,无法执行succes方法,追踪ajaxfileupload.js源码发现: 当执行if(type=="json")    eval("data = "+data);会抛出异常,导致在处理异常的时候将status = "error" 因此一直执行error方法. 上网查询,得知eval函数是用来执行一段js代码,而并不是如我所想的反

jquery是如何清除ajax缓存的

大家都知道万恶的IE在ajax中往往只读取第一次ajax请求时候的数据,其余时候都是从cache提取数据,(太懒了T_T).原生的JS清除ajax缓存的方法多,但是终觉有点繁琐,如果是用jquery的同学,就设置一个参数就OK了,那就是cache: false,比如: $.ajax({ url: "mms-draft!getMmsDraftList", cache: false, dataType : "json", data:{ //some parameters