您的位置:首页 > Web前端 > JQuery

jQuery学习笔记:Ajax(二)

2010-08-09 22:06 686 查看
3、jQuery.get(url,[data],[callback],[type])

通过远程 HTTP GET 请求载入信息。

这是一个简单的 GET 请求功能以取代复杂 $.ajax 。请求成功时可调用回调函数。如果需要在出错时执行函数,请使用 $.ajax。

返回值 XMLHttpRequest

参数

url (String) : 待载入页面的URL地址

data (Map) : (可选) 待发送 Key/value 参数。

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

type (String) : (可选) 返回内容格式,xml, html, script, json, text, _default。

示例

Code

function jqAjaxTest() {

     var jqRequestUrl = "AjaxHandler.ashx";

     $.get(jqRequestUrl + "?action=jquery", { userName: "jeff wong", location: "beijing" }, jqGetNormalCallBack, 'text'); //返回数据类型

}

function jqGetNormalCallBack(oData) {

     $("#spanResult").html(oData);//这里直接json数据绑定了,下一个jquery方法会有处理

     $("#spanResult").css("display", "block");

     $("#spanResult").css("color", "red");

}
AjaxHandler.ashx代码:

Code

using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

using System.Web.SessionState;

using System.Xml;

namespace MyJQTest

{

     public class AjaxHandler : IHttpHandler, IRequiresSessionState

     {

         /// <summary>

         /// 可复用

         /// </summary>

         public bool IsReusable

         {

             get

             {

                 return true;

             }

         }

         public void ProcessRequest(HttpContext context)

         {

             AjaxOperations(context);

         }

         private void AjaxOperations(HttpContext context)

         {

             string action = context.Request["action"];

             if (!string.IsNullOrEmpty(action))

             {

                 switch (action)

                 {

                     default:

                         break;

                     case "jquery":

                         ProcessJQueryRequest(context);

                         break;

                 }

             }

         }

         private void ProcessJQueryRequest(HttpContext context)

         {

             context.Response.ClearContent();

             context.Response.ContentType = "text/plain"; //设置输出流类型

               context.Response.Cache.SetCacheability(HttpCacheability.NoCache); //没有缓存

               string userName = context.Request["userName"].Trim();

             string location = context.Request["location"].Trim();

             string jsonObject = "{/"userName/":/"" + userName + "/",/"location/":/"" + location + "/"}";

             context.Response.Write(jsonObject);

         }

     }

}
ps:本例中,我们返回的是一段json类型的数据,在客户端没有对json类型数据进行处理,在下一个方法(jQuery.getJSON)中会 改进处理的。

4、jQuery.getJSON(url,[data],[callback])

通过 HTTP GET 请求载入 JSON 数据。

在 jQuery 1.2 中,您可以通过使用JSONP 形式的回调函数来加载其他网域的JSON数据,如 "myurl?callback=?"。jQuery 将自动替换 ? 为正确的函数名,以执行回调函数。

注意:此行以后的代码将在这个回调函数执行前执行。

返回值 XMLHttpRequest

参数

url (String) : 发送请求地址。

data (Map) : (可选) 待发送 Key/value 参数。

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

示例

Code

function jqAjaxTest() {

     var jqRequestUrl = "AjaxHandler.ashx";

     //getJSON方法调用

     $.getJSON(jqRequestUrl + "?action=jquery", { userName: "jeff wong", location: "beijing" }, jqGetJsonCallBack); //返回json数据类型

}

//对json数据进行处理 (oData是json类型的数据)

function jqGetJsonCallBack(oData) {

     var oJsonStr = "";

     //取json中的数据,并呈现

     oJsonStr += "userName:" + oData.userName + "  location:" + oData.location + "<br/>";

     //在div中显示所有数据

     $("#divResult").html(oJsonStr);

     $("#divResult").css("display", "block");

     $("#divResult").css("color", "red");

}
5、jQuery.getScript(url,[callback])

通过 HTTP GET 请求载入并执行一个 JavaScript 文件。

jQuery 1.2 版本之前,getScript 只能调用同域 JS 文件。 1.2中,您可以跨域调用 JavaScript 文件。注意:Safari 2 或更早的版本不能在全局作用域中同步执行脚本。如果通过 getScript 加入脚本,请加入延时函数。

返回值 XMLHttpRequest

参数

url (String) : 待载入 JS 文件地址。

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

示例

Code

function jqAjaxTest() {

     var jsUrl = "js/jqLoadJs.js";

     //getScript方法调用

     $.getScript(jsUrl, jqGetJsCallBack);

}

//oData返回的是整个js路径下js文件内容

function jqGetJsCallBack(oData) {

     alert(oData);

}
6、jQuery.post(url,[data],[callback],[type])

通过远程 HTTP POST 请求载入信息。

这是一个简单的 POST 请求功能以取代复杂 $.ajax 。请求成功时可调用回调函数。如果需要在出错时执行函数,请使用 $.ajax。

返回值 XMLHttpRequest

参数

url (String) : 发送请求地址。

data (Map) : (可选) 待发送 Key/value 参数。

callback (Function) : (可选) 发送成功时回调函数。

type (String) : (可选) 返回内容格式,xml, html, script, json, text, _default。

示例

Code

function jqAjaxTest() {

     var jqRequestUrl = "AjaxHandler.ashx";

     $.post(jqRequestUrl + "?action=jquery", { userName: "jeff wong", location: "beijing" }, jqPostCallBack, "text"); //返回text数据类型

}

function jqPostCallBack(oData) {

     //在div中显示所有数据

     $("#divResult").html(oData);

     $("#divResult").css("display", "block");

     $("#divResult").css("color", "red");

}
二、Ajax事件

1、ajaxComplete(callback)

AJAX 请求完成时执行函数。Ajax 事件。

XMLHttpRequest 对象和设置作为参数传递给回调函数。

返回值 jQuery

参数

callback (Function) : 待执行函数

示例

Code

function jqAjaxTest() {

     var jqRequestUrl = "AjaxHandler.ashx
4000
";

     $.post(jqRequestUrl + "?action=jquery", { userName: "jeff wong", location: "beijing" }, jqPostCallBack, "text"); //返回text数据类型

     //AJAX 请求完成时执行函数

     $("#divResult").ajaxComplete(function(event, request, settings) {

         $(this).append("<br/>请求完成.");

     });

}

function jqPostCallBack(oData) {

     //在div中显示所有数据

     $("#divResult").html(oData);

     $("#divResult").css("display", "block");

     $("#divResult").css("color", "red");

}
2、ajaxError(callback)

AJAX 请求发生错误时执行函数。Ajax 事件。

XMLHttpRequest 对象和设置作为参数传递给回调函数。捕捉到的错误可作为最后一个参数传递。

返回值 jQuery

参数

callback (Function) : 待执行函数

function (event, XMLHttpRequest, ajaxOptions, thrownError) {

      // thrownError 只有当异常发生时才会被传递

      this; // 监听的 dom 元素

}

示例

Code

function jqAjaxTest() {

     var jqRequestUrl = "AjaxHandlers.ashx"; //正确的文件名   AjaxHandler.ashx   这里故意写错   引发ajaxError事件

     $.post(jqRequestUrl + "?action=jquery", { userName: "jeff wong", location: "beijing" }, jqPostCallBack, "text");

}

//AJAX 请求发生错误时执行函数 (这一段放在jqAjaxTest函数内也可以)

$("#divResult").ajaxError(function(event, request, settings) {

     $("#divResult").css("display", "block");

     $("#divResult").css("color", "red");

     $(this).append("<br/>出错页面:" + settings.url);

});

function jqPostCallBack(oData) {

     //在div中显示所有数据

     $("#divResult").html(oData);

     $("#divResult").css("display", "block");

     $("#divResult").css("color", "red");

}
3、ajaxSend(callback)

AJAX 请求发送前执行函数。Ajax 事件。

XMLHttpRequest 对象和设置作为参数传递给回调函数。

返回值 jQuery

参数

callback (Function) : 待执行函数

示例

Code

function jqAjaxTest() {

     var jqRequestUrl = "AjaxHandler.ashx";

     $.post(jqRequestUrl + "?action=jquery", { userName: "jeff wong", location: "beijing" }, jqPostCallBack, "text");

}

//AJAX 请求发送前执行函数

$("#divResult").ajaxSend(function(evt, request, settings) {

     $("#divResult").css("display", "block");

     $("#divResult").css("color", "red");

     $(this).append("<br/>开始请求: " + settings.url + "<br/>");

});

function jqPostCallBack(oData) {

     //在div中显示所有数据

     $("#divResult").append(oData);

     $("#divResult").css("display", "block");

     $("#divResult").css("color", "red");

}
4、ajaxStart(callback)

AJAX 请求开始时执行函数。Ajax 事件。

返回值 jQuery

参数

callback (Function) : 待执行函数

示例

Code

function jqAjaxTest() {

     var jqRequestUrl = "AjaxHandler.ashx";

     $.post(jqRequestUrl + "?action=jquery", { userName: "jeff wong", location: "beijing" }, jqPostCallBack, "text");

}

//AJAX 请求开始时执行函数

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

     $("#divResult").css("display", "block");

     $("#divResult").css("color", "red");

     $(this).append("<br/>请求开始了<br/>");

});

function jqPostCallBack(oData) {

     //在div中显示所有数据

     $("#divResult").append(oData);

     $("#divResult").css("display", "block");

     $("#divResult").css("color", "red");

}
5、ajaxStop(callback)

AJAX 请求结束时执行函数。Ajax 事件。

返回值 jQuery

参数

callback (Function) : 待执行函数

示例

Code

function jqAjaxTest() {

     var jqRequestUrl = "AjaxHandler.ashx";

     $.post(jqRequestUrl + "?action=jquery", { userName: "jeff wong", location: "beijing" }, jqPostCallBack, "text");

}

//AJAX 请求开始时执行函数

$("#divResult").ajaxStop(function() {

     $(this).append("<br/>请求已经结束了<br/>");

});

function jqPostCallBack(oData) {

     //在div中显示所有数据

     $("#divResult").append(oData);

     $("#divResult").css("display", "block");

     $("#divResult").css("color", "red");

}
6、ajaxSuccess(callback)

AJAX 请求成功时执行函数。Ajax 事件。

XMLHttpRequest 对象和设置作为参数传递给回调函数。

返回值 jQuery

参数

callback (Function) : 待执行函数

示例

Code

function jqAjaxTest() {

     var jqRequestUrl = "AjaxHandler.ashx";

     $.post(jqRequestUrl + "?action=jquery", { userName: "jeff wong", location: "beijing" }, jqPostCallBack, "text");

}

//AJAX 请求成功时执行函数

$("#divResult").ajaxSuccess(function(evt, request, settings) {

     $(this).append("<br/>请求成功<br/>");

     $(this).append(settings.url);

});

function jqPostCallBack(oData) {

     //在div中显示所有数据

     $("#divResult").append(oData);

     $("#divResult").css("display", "block");

     $("#divResult").css("color", "red");

}
三、其他

1、jQuery.ajaxSetup(options)

设置全局 AJAX 默认选项。

参数见 '$.ajax' 说明。

返回值 jQuery

参数

options (可选) : 选项设置。所有设置项均为可选设置。

示例

//设置 AJAX 请求默认地址为 "AjaxHandler.ashx",禁止触发全局 AJAX 事件,用 POST 代替默认 GET 方法。其后的 AJAX 请求不再设置任何选项参数。

$.ajaxSetup({

     url: "AjaxHandler.ashx",

     global: false,

     type: "POST"

});
2、serialize()

序列化表单内容为字符串。

返回值 jQuery

参数

序列化表单内容为字符串,用于 Ajax 请求。

示例

$(document).ready(function() {

     var oSerializedStr = $("form").serialize(); //序列化表单内容为字符串

     $("#results").append("<tt>" + oSerializedStr + "</tt>");

});
文档片段:

Code

<body>

     <p id="results">

         <b>Results: </b>

     </p>

     <form>

     <select name="single">

         <option>Single</option>

         <option>Single2</option>

     </select>

     <select name="multiple" multiple="multiple">

         <option selected="selected">Multiple</option>

         <option>Multiple2</option>

         <option selected="selected">Multiple3</option>

     </select><br />

     <input type="checkbox" name="check" value="check1" />

     check1

     <input type="checkbox" name="check" value="check2" checked="checked" />

     check2

     <input type="radio" name="radio" value="radio1" checked="checked" />

     radio1

     <input type="radio" name="radio" value="radio2" />

     radio2

     </form>

     <script src="js/jQTest.js" type="text/javascript"></script>

</body>
3、serializeArray()

序列化表单内容,返回 JSON 数据结构数据。

返回值 jQuery

参数

序列化表单内容为JSON ,用于 Ajax 请求。

示例

Code

$(document).ready(function() {

     var fields = $("select, :radio").serializeArray(); //序列化表单select和raido为json

     jQuery.each(fields, function(i, field) {

         $("#results").append(field.value + " ");

     });

});
好了,关于jQuery的ajax就介绍到这里,笔者的每个示例都测试通过了。jQuery封装好的ajax函数用起来确实方便,有了这样的“神兵利 器”,以后写ajax的应用程序肯定会更加得心应手。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息