9.1 Ajax 的 XMLHttpRequest 对象

9.2 JQuery中的Ajax

9.2.1 load()方法

9.2.2 $.get()

9.2.3 $.post()

9.2.4 $.getScript()方法和$.getJson()方法

9.2.5 序列化元素

1.serialize()   序列表表格内容为字符串

2.serializeArray()   序列化表格元素 (类似 '.serialize()' 方法) 返回 JSON 数据结构数据。

3.$.param()   用来对一个数组或者对象按key\value进行序列化

9.2.6 Jquery中的Ajax全局事件:  ajaxStart(callback),ajaxStop(callback)

9.2.7 $.ajax

9.1 Ajax 的 XMLHttpRequest 对象

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
<script type="text/javascript">
var xmlHttpReq = null;
function Ajax() {
if (window.ActiveXObject) {//ie5,ie6是ActiveObject的方式
xmlHttpReq = new ActiveXObject("Microsft.XMLHTTP");
} else if (window.XMLHttpRequest) {//除ie5,ie6以外的浏览器,XHR是window的子对象
xmlHttpReq = new XMLHttpRequest();
}
//xtr是通过open方法来初始化
//open( method 请求的动作类型 , url 地址 , async 同步还是异步)
xmlHttpReq.open("GET", "index.html", true);
xmlHttpReq.onreadystatechange = RequestCallBack;//设置回调函数
xmlHttpReq.send(null);//因为get方法提交,可以使用null作为参数调用 function RequestCallBack() {//一旦readyState值改变就调用该函数
if (xmlHttpReq.readyState == 4) {
if (xmlHttpReq.status == 200) {
//讲xmlHttpReq.responseText的值赋予id 为resText的元素
document.getElementById('resText').innerHTML = xmlHttpReq.responseText;
}
}
}
}
</script>
</head>
<body>
<input type="button" value="Ajax提交" onclick="Ajax()" />
<div id="resText"></div>
</body>
</html>

9.2 JQuery中的Ajax

9.2.1 load()方法

load(url, [data], [callback])

url:待装入 HTML 网页网址。

data(可选):发送至服务器的 key/value 数据。在jQuery 1.3中也可以接受一个字符串了。

callback(可选):载入成功时回调函数。

9.2.2 $.get()

url,[data],[callback],[type]

url:待载入页面的URL地址

data:待发送 Key/value 参数。

callback:载入成功时回调函数。

type:返回内容格式,xml, html, script, json, text, _default

案例:

以返回数据为json为例

test.html

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
<script src="../Scripts/jquery-easyui-1.3.2/jquery-1.8.0.min.js"></script>
<script type="text/javascript">
$(function () {
$("#send").click(function () {
$.get('Ajax_get.ashx',
{
username: $('#username').val(),
content: $('#content').val()
}
//$("#form1").serialize() //序列化表格元素
, function (data, textStatus) {
var username = data.username; //取返回数据的username
console.info(username);
$('#resText').html(username);
}, "json");//格式选择json
});
})
</script>
</head>
<body>
<form id="form1" action="#">
<p>评论</p>
<p>姓名:<input type="text" name="username" id="username" /></p>
<p>内容:<textarea name="content" id="content" rows="2" cols="20">content</textarea></p>
<p>
<input type="button" id="send" value="提交" />
</p>
</form>
<div class="comment">已有评论.</div>
<div id="resText"></div>
</body>
</html>

Ajax_get.ashx

using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI.MobileControls;
using System.Web.UI.WebControls;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq; //引用的newtonsoft.json.dll (json.net) namespace EasyUiTest.Ajax_get
{
/// <summary>
/// Ajax_get 的摘要说明
/// </summary>
public class Ajax_get : IHttpHandler
{
HttpRequest Request;
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/html";
string username = context.Request["username"].ToString();
string content = context.Request["content"].ToString(); //linq to json
JObject json = new JObject();
json.Add(new JProperty("username", username));
json.Add(new JProperty("content", content)); context.Response.Write(json);
} public bool IsReusable
{
get
{
return false;
}
}
}
}

9.2.3 $.post()

它与$.get()使用方法和结构一样,他们之间的区别我就不说了。自己去研究。

9.2.4 $.getScript()方法和$.getJson()方法

$.getScript()加载js文件

$.getScript(‘test.js’)

$.getJson()用来加载json文件

$.getJson(‘test.json’)

9.2.5 序列化元素

1.serialize()

序列表表格内容为字符串。

$("#form1").serialize() //序列化表格里所有元素,取代 { username: $('#username').val(),…}

$.get('Ajax_get.ashx',
                        //{

//  username: $('#username').val(),

//   content: $('#content').val()

// }

$("#form1").serialize() //序列化表格里所有元素

, function (data, textStatus) {…}, "json");//格式选择json

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
<script src="../Scripts/jquery-easyui-1.3.2/jquery-1.8.0.min.js"></script>
<script type="text/javascript">
$(function () {
$("#send").click(function () {
var $data = $(":checkbox,:radio").serialize();
console.info($data);
})
})
</script>
</head>
<body>
<input type="checkbox" name="check" value="1" checked />篮球<br />
<input type="checkbox" name="check" value="2" />足球<br />
<input type="checkbox" name="check" value="3" />乒乓球<br />
<input type="checkbox" name="check" value="4" />羽毛球<br /> <input type="radio" name="radio" value="1" checked />篮球<br />
<input type="radio" name="radio" value="2" />足球<br />
<input type="radio" name="radio" value="3" />乒乓球<br />
<input type="radio" name="radio" value="4" />羽毛球<br /> <button id="send">提交</button>
</body>
</html>

2.serializeArray()

序列化表格元素 (类似 '.serialize()' 方法) 返回 JSON 数据结构数据。

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<!-- 引入jQuery -->
<script src="../Scripts/jquery-easyui-1.3.2/jquery-1.8.0.min.js"></script>
<script type="text/javascript">
$(function () {
var fields = $("select,:checkbox,:radio").serializeArray();
console.log(fields);
$.each(fields, function (i, field) {
$("#results").append(field.value + " , ");
});
})
</script> <p id="results"><b>结果:</b> </p> <input type="checkbox" name="check" value="1" checked/>篮球<br/>
<input type="checkbox" name="check" value="2" checked/>足球<br/>
<input type="checkbox" name="check" value="3" checked/>乒乓球<br/>
<input type="checkbox" name="check" value="4" />羽毛球<br/> <input type="radio" name="radio" value="1" checked/>篮球<br/>
<input type="radio" name="radio" value="2" />足球<br/>
<input type="radio" name="radio" value="3" />乒乓球<br/>
<input type="radio" name="radio" value="4" />羽毛球<br/>

3.$.param()

将表单元素数组或者对象序列化。是.serialize()的核心方法。

<script type="text/javascript">
//<![CDATA[
$(function(){
var obj={a:1,b:2,c:3};
var k = $.param(obj);
alert(k) // 输出 a=1&b=2&c=3
})
//]]>
</script>

9.2.6 Jquery中的Ajax全局事件

ajaxStart(callback) AJAX 请求开始时执行函数。Ajax 事件。

ajaxStop(callback) AJAX 请求结束时执行函数。Ajax 事件。

$("#loading").ajaxStart(function(){

$(this).show();

});

9.2.7 $.ajax

jQuery.ajax(url,[settings])
url:一个用来包含发送请求的URL字符串。

settings:AJAX 请求设置。所有选项都是可选的。

回调函数

如果要处理$.ajax()得到的数据,则需要使用回调函数。beforeSend、error、dataFilter、success、complete。

  • beforeSend 在发送请求之前调用,并且传入一个XMLHttpRequest作为参数。
  • error 在请求出错时调用。传入XMLHttpRequest对象,描述错误类型的字符串以及一个异常对象(如果有的话)
  • dataFilter 在请求成功之后调用。传入返回的数据以及"dataType"参数的值。并且必须返回新的数据(可能是处理过的)传递给success回调函数。
  • success 当请求之后调用。传入返回后的数据,以及包含成功代码的字符串。
  • complete 当请求完成之后调用这个函数,无论成功或失败。传入XMLHttpRequest对象,以及一个包含成功或错误代码的字符串。

1.代替$.getScript()方法:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<style>
* { margin:0; padding:0;}
body { font-size:12px;}
.comment { margin-top:10px; padding:10px; border:1px solid #ccc;background:#DDD;}
.comment h6 { font-weight:700; font-size:14px;}
.para { margin-top:5px; text-indent:2em;background:#DDD;}
</style>
<!-- 引入jQuery -->
<script src="../Scripts/jquery-easyui-1.3.2/jquery-1.8.0.min.js"></script>
<script>
$(function () {
$('#send').click(function () {
$.ajax({
type: "GET",
url: "test.js",
dataType: "script"
});
});
})
</script>
</head>
<body>
<br/>
<p>
<input type="button" id="send" value="加载"/>
</p> <div class="comment">已有评论:</div>
<div id="resText" > </div> </body>
</html>

test.js

var comments = [
{
"username": "张三",
"content": "沙发."
},
{
"username": "李四",
"content": "板凳."
},
{
"username": "王五",
"content": "地板."
}
]; var html = '';
$.each( comments , function(commentIndex, comment) {
html += '<div class="comment"><h6>' + comment['username'] + ':</h6><p class="para">' + comment['content'] + '</p></div>';
}) $('#resText').html(html);

2.代替$.getJSON()方法

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<style>
* { margin:0; padding:0;}
body { font-size:12px;}
.comment { margin-top:10px; padding:10px; border:1px solid #ccc;background:#DDD;}
.comment h6 { font-weight:700; font-size:14px;}
.para { margin-top:5px; text-indent:2em;background:#DDD;}
</style>
<script src="../Scripts/jquery-easyui-1.3.2/jquery-1.8.0.min.js"></script>
<!-- 引入jQuery --> <script>
$(function () {
$('#send').click(function () {
$.ajax({
type: "GET",
url: "test.aspx",
dataType: "json",
success: function (data) {
$('#resText').empty();
var html = '';
$.each(data, function (commentIndex, comment) {
html += '<div class="comment"><h6>' + comment['username'] + ':</h6><p class="para">' + comment['content'] + '</p></div>';
})
$('#resText').html(html);
}
});
});
})
</script>
</head>
<body>
<br/>
<p>
<input type="button" id="send" value="加载"/>
</p> <div class="comment">已有评论:</div>
<div id="resText" > </div> </body>
</html>

test.aspx

[
{
"username": "张三",
"content": "沙发."
},
{
"username": "李四",
"content": "板凳."
},
{
"username": "王五",
"content": "地板."
}
]

效果同上。

jQuery - 9.Ajax的更多相关文章

  1. jQuery之ajax实现篇

    jQuery的ajax方法非常好用,这么好的东西,你想拥有一个属于自己的ajax么?接下来,我们来自己做一个简单的ajax吧. 实现功能 由于jq中的ajax方法是用了内置的deferred模块,是P ...

  2. 【原创经验分享】JQuery(Ajax)调用WCF服务

    最近在学习这个WCF,由于刚开始学 不久,发现网上的一些WCF教程都比较简单,感觉功能跟WebService没什么特别大的区别,但是看网上的介绍,就说WCF比WebService牛逼多少多少,反正我刚 ...

  3. jQuery版AJAX简易封装

    开发过程中,AJAX的应用应该说非常频繁,当然,jQuery的AJAX函数已经非常好用,但是小编还是稍微整理下,方便不同需求下,可以简化输入参数,下面是实例代码: $(function(){ /** ...

  4. JS原生ajax与Jquery插件ajax深入学习

    序言: 近来随着项目的上线实施,稍微有点空闲,闲暇之时偶然发现之前写的关于javascript原生xmlHttpRequest ajax方法以及后来jquery插件ajax方法,于是就行了一些总结,因 ...

  5. 重写jquery的ajax方法

    //首先备份下jquery的ajax方法 var _ajax=$.ajax; //重写jquery的ajax方法 $.ajax=function(opt){ //备份opt中error和success ...

  6. Jquery通过Ajax方式来提交Form表单

    今天刚好看到Jquery的ajax提交数据到服务器的方法,原文是: 保存数据到服务器,成功时显示信息. jQuery 代码: $.ajax({ type: "POST", url: ...

  7. 对jquery的ajax进行二次封装以及ajax缓存代理组件:AjaxCache

    虽然jquery的较新的api已经很好用了, 但是在实际工作还是有做二次封装的必要,好处有:1,二次封装后的API更加简洁,更符合个人的使用习惯:2,可以对ajax操作做一些统一处理,比如追加随机数或 ...

  8. jquery管理ajax异步-deferred对象

    今天跟大家分享一个jquery中的对象-deferred.其实早在jquery1.5.0版本中就已经引入这个对象了.不过可能在实际开发过程中用到的并不多,所以没有太在意. 这里先不说deferred的 ...

  9. Struts2 使用jQuery实现Ajax

    在jQuery中将Ajax相关的操作进行封装,使用时只需在合适的地方调用Ajax相关的方法即可,相比而言,使用jQuery实现Ajax更加简洁,方便 1.$.Ajax()可以通过发送Http请求加载远 ...

  10. JQuery中Ajax的操作

    JQuery   Ajax异步操作的方式: $.ajax,$.post, $.get, $.getJSON. 一, $.ajax,这个是JQuery对ajax封装的最基础步,通过使用这个函数可以完成异 ...

随机推荐

  1. 如何在 CentOS 7 用 cPanel 配置 Nginx 反向代理

    导读 Nginx 是最快和最强大的 Web 服务器之一,以其高性能和低资源占用率而闻名.它既可以被安装为一个独立的 Web 服务器,也可以安装成反向代理 Web 服务器.在这篇文章,我将讨论在安装了 ...

  2. Android圆角矩形创建工具RoundRect类

    用于把普通图片转换为圆角图像的工具类RoundRect类(复制即可使用): import android.content.Context; import android.graphics.Bitmap ...

  3. 字符串驱动技术—— MethodAddress , MethodName , ObjectInvoke

    首先看一段Delphi帮助中的介绍(After Delphi 6 ): Returns the address of a published method. class function Method ...

  4. 2 DelayInterval延时间隔类——Live555源码阅读(一)基本组件类

    这是Live555源码阅读的第一部分,包括了时间类,延时队列类,处理程序描述类,哈希表类这四个大类. 这里是时间相关类的第二个部分. 本文由乌合之众 lym瞎编,欢迎转载 http://www.cnb ...

  5. leetcode:32 最长有效括号

     题目: 给一个包含了'(' 和 ')'的字符串,求出其中最长有效括号的长度. 做题情况:自己做出来,但做了较长的时间. 思路:可以算得穷举法的时间复杂度为O(n^3).虽然这题求的是最长的长度,但是 ...

  6. Convert a given Binary Tree to Doubly Linked List

    The question and solution are from: http://www.geeksforgeeks.org/convert-given-binary-tree-doubly-li ...

  7. http://www.htmleaf.com/ziliaoku/qianduanjiaocheng/

    http://www.htmleaf.com/ziliaoku/qianduanjiaocheng/ box-shadow  :   http://blog.csdn.net/freshlover/a ...

  8. js弹出提示信息,然后跳转到另一页面

    <script language="javascript">  alert("您的用户名与密码已成功修改!");  document.locatio ...

  9. 学习Selenium2Library的好例子

    最近好几个人问我有没有好的例子可以帮助学习Selenium2Library怎么用.对于公司同事,可以把脚本直接给过去,其他人则不行了.所以一直想做一个好的学习样例,这个样例应该有如下特性: 能够非常好 ...

  10. wxPython中文教程入门实例

    这篇文章主要为大家分享下python编程中有关wxPython的中文教程,分享一些wxPython入门实例,有需要的朋友参考下     wxPython中文教程入门实例 wx.Window 是一个基类 ...