Jquery使用AJAX方法请求数据

一、AJAX请求

1、jQuery.ajax(url,[settings]):

通过 HTTP 请求加载远程数据。

jQuery 底层 AJAX 实现。简单易用的高层实现见 $.get, $.post 等。$.ajax() 返回其创建的 XMLHttpRequest 对象。大多数情况下你无需直接操作该函数。

Example: 保存数据到服务器,成功时显示信息。

$.ajax({
  type: "POST",
  url: "some.php",
  data: { name: "John", location: "Boston" }
}).done(function( msg ) {
  alert( "Data Saved: " + msg );
});

2、ajax选项

  • async (默认: true):是否为异步请求
  • global (默认: true):是否触发全局 AJAX 事件
  • url (默认: 当前页面地址)“发送请求的地址
  • type (默认: 'GET'):请求方式 ("POST" 或 "GET"),Get时,参数中如果要传递中文,则需要用encodeURIComponent().
  • data:发送到服务器的数据。可将对象或数组将自动转换为请求字符串格式。
  • dataType (默认: Intelligent Guess (xml, json, script, or html)):预期服务器返回的数据类型。如果不指定,jQuery 将自动根据 HTTP 包 MIME 信息来智能判断,比如XML MIME类型就被识别为XML。
  • context:用于设置Ajax相关回调函数的上下文。 默认情况下,这个上下文是一个ajax请求使用的参数设置对象settings。
  • cache (默认: true, dataType为"script"和"jsonp"时默认为false):如果设置为 false ,浏览器将不缓存此页面。

3、回调函数

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

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

4、GET方法和POST方法的区别

  • get是从服务器上获取数据,get是把参数数据队列加到URL中,值和表单内各个字段一一对应,在URL中可以看到。(服务器端用Request.QueryString获取变量的值)
  • post是向服务器传送数据。post是通过HTTP post机制,将参数数据队列放置在HTML HEADER内一起传送到URL地址。用户看不到这个过程。(服务器端用Request.Form获取提交的数据)
  • get传送的数据量较小,不能大于2KB。post传送的数据量较大,一般被默认为不受限制。但理论上,IIS4中最大量为80KB,IIS5中为100KB。
  • get安全性非常低,post安全性较高,但是执行效率却比Post方法好。包含机密信息的话,建议用Post数据提交方式;
  • 在做数据查询时,建议用Get方式;而在做数据添加、修改或删除时,建议用Post方式;

二、AJAX请求快捷方法:

1、.load( url [, data ] [, callback ] ):

从服务器载入数据并且将返回的 HTML 代码并插入至 匹配的元素中。

如果提供了 "complete" 回调函数,它将在函数处理完之后,并且 HTML 已经被插入完时被调用。

默认使用 GET 方式 , 如果data参数提供一个对象,那么使用 POST 方式。

举例:

//1、在一个有序列表中,加载主页的页脚导航。
 $("#new-nav").load("/ #jq-footerNavigation li");
//2、显示一个信息如果Ajax请求遭遇一个错误
$("#success").load("/not-here.php", function(response, status, xhr) {
  if (status == "error") {
    var msg = "Sorry but there was an error: ";
    $("#error").html(msg + xhr.status + " " + xhr.statusText);
  }
});

//3、发送数组形式的data参数到服务器。
$("#objectID").load("test.php", { 'choices[]': ["Jon", "Susan"] } );

//4、将feeds.html 文件载人到 ID为feeds的DIV.
$("#feeds").load("feeds.html");

2、$.get(URL,callback):

通过 HTTP GET 请求从服务器上请求数据。

下面的例子使用 $.get() 方法从服务器上的一个文件中取回数据:

$("button").click(function(){
  $.get("demo_test.asp",function(data,status){
    alert("Data: " + data + "\nStatus: " + status);
  });
});

3、$.post(URL,data,callback):

通过 HTTP POST 请求从服务器上请求数据。

下面的例子使用 $.post() 连同请求一起发送数据:

$("button").click(function(){
  $.post("demo_test_post.asp",
  {
    name:"Donald Duck",
    city:"Duckburg"
  },
  function(data,status){
    alert("Data: " + data + "\nStatus: " + status);
  });
});

4、$.getJSON(url,data,callback):

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

data数据会被附加到一个查询字符串的URL中,发送到服务器。如果该值的data参数是一个普通的对象,它会转换为一个字符串并使用URL编码,然后才追加到URL中。

下面的例子从 Flickr JSONP API中加载最近的四张标签为猫的图片:

$.getJSON("http://api.flickr.com/services/feeds/photos_public.gne?jsoncallback=?",
  {
    tags: "mount rainier",
    tagmode: "any",
    format: "json"
  },
  function(data) {
    $.each(data.items, function(i,item){
      $("<img/>").attr("src", item.media.m).appendTo("#images");
      if ( i == 3 ) return false;
    });
  });

通过test.js加载这个JSON数据,并使用返回的JSON数据中的 name值:

$.getJSON("test.js", function(json) {
   alert("JSON Data: " + json.users[3].name);
 });

5、$.getScript( url [, callback ] ):

使用一个HTTP GET请求从服务器加载并执行一个 JavaScript 文件

载入的脚本在全局环境中执行,因此能够引用其他变量,并使用 jQuery 函数。被加载的脚本同样作用于当前页面.

默认情况下,$.getScript() cache选项被设置为 false。这将在请求的URL的查询字符串中追加一个时间戳参数,以确保每次浏览器下载的脚本被重新请求。

我们动态加载新的官方jQuery 颜色动画插件,一旦该插件加载完成就会触发一些颜色动画。

(function() {
  var url = "https://raw.github.com/jquery/jquery-color/master/jquery.color.js";
  $.getScript(url, function() {
    $("#go").click(function(){
      $(".block")
        .animate( { backgroundColor: "rgb(255, 180, 180)" }, 1000 )
        .delay(500)
        .animate( { backgroundColor: "olive" }, 1000 )
    });
  });
})();

三、全局事件

Ajax会触发很多事件。 
有两种事件,一种是局部事件,一种是全局事件:

1、局部事件:

通过$.ajax来调用并且分配。

$.ajax({
beforeSend: function(){
// Handle the beforeSend event
},
complete: function(){
// Handle the complete event
}
// ...
});

2、全局事件:

可以用bind来绑定,用unbind来取消绑定。

这个跟click/mousedown/keyup等事件类似。但他可以传递到每一个DOM元素上。

$("#loading").bind("ajaxSend", function(){ //使用bind
    $(this).show();
}).ajaxComplete(function(){ //直接使用ajaxComplete
    $(this).hide();
});

当然,你某一个Ajax请求不希望产生全局的事件,则可以设置global:false

$.ajax({
url: "test.html",
global: false,
// ...
});

全局事件中,除了ajaxStart和ajaxStop之外,其他的事件都有3个参数:event, XMLHttpRequest, ajaxOptions。

3、事件顺序

事件发生的顺序如下:

  • .ajaxStart(全局):在AJAX 请求刚开始时执行一个处理函数.
  • beforeSend(局部事件):当一个Ajax请求开始时触发。如果需要,你可以在这里设置XHR对象。
  • .ajaxSend(全局):在Ajax请求发送之前绑定一个要执行的函数.
  • success(局部事件):请求成功时触发。即服务器没有返回错误,返回的数据也没有错误。
  • .ajaxSuccess(全局):当 Ajax 请求成功完成时执行。
  • error(局部事件):仅当发生错误时触发。你无法同时执行success和error两个回调函数。
  • .ajaxError(全局):Ajax请求出错时注册一个回调处理函数。
  • complete(局部事件):不管你请求成功还是失败,即便是同步请求,你都能在请求完成时触发这个事件。
  • .ajaxComplete(全局):当Ajax请求完成后注册一个回调函数。
  • .ajaxStop(全局):在AJAX 请求完成时执行一个处理函数。

举例:

//当 AJAX 请求开始时,显示“加载中”的指示:
$("div").ajaxStart(function(){
  $(this).html("<img src='demo_wait.gif' />");
});

//AJAX 请求结束后隐藏信息:
$("#loading").ajaxStop(function(){
  $(this).hide();
});

四、$.ajaxSetup( options ) :

设置全局 AJAX 默认选项。

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

$.ajaxSetup({
  url: "/xmlhttp/",
  global: false,
  type: "POST"
});
$.ajax({ data: myData });

五、.serialize() 与 .serializeArray():

序列化表单内容

如果要表单元素的值包含到序列字符串中,元素不能被禁用,元素必须使用 name 属性。

1、.serialize() :

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

.serialize() 方法可以操作已选取个别表单元素的 jQuery 对象,比如 <input>, <textarea> 以及 <select>。不过,选择 <form> 标签本身进行序列化一般更容易些:

$('form').submit(function() {
  alert($(this).serialize());
  return false;
});

输出标准的查询字符串:

a=1&b=2&c=3&d=4&e=5

2、.serializeArray() :

序列化表单内容为JSON数组。

serializeArray()输出标准的查询JOSN对象:

[ { name: a value: 1 }, { name: b value: 2 }, { name: c value: 3 }, { name: d value: 4 }, { name: e value: 5 } ]

六、利用Jquery获取后台代码或Webservice

注意:1.方法一定要静态方法,而且要有[WebMethod]的声明

后台<C#>:

using System.Web.Script.Services;  

[WebMethod]
public static string SayHello()
{
     return "Hello Ajax!";
}

前台<JQuery>:

$(function()
 {
    $("#btnOK").click(function()
 {
        $.ajax({
            //要用post方式
            type:"Post",
            //方法所在页面和方法名
            url:location.pathname+"/SayHello",
            contentType:"application/json; charset=utf-8",
            dataType:"json",
            success:function(data)
             {
                alert(data.d);  //返回的数据用data.d获取内容
            },
            error:function(err)
             {
                alert(err);
            }
        });  

        //禁用按钮的提交
        return false;
    });
});

注意:如果方法需要传参数如:GetStr(string str,string str2),则$.ajax需要增加data: "{'str':'我是','str2':'XXX'}"。

七、通过Ajax读取XML数据

//1、解析XML字符串:
var xmlDoc=$.parseXML(“”);

//2、封装XMLDOC:
var $xml=$(xmlDoc) 

//3、判断是否是XMLDOC:
$.isXMLDoc(xmlDoc)==true

//4、查询XML,和查询HTML语法一致:
$.xml.find(“title”).text;$(“title”,$xml).text();

通过Ajax读取XML数据:

$.ajax({
     type: "POST",
     url: "WebService1.asmx/GetDataSet",
     data: "{}",
     dataType: 'xml', //返回的类型为XML ,和前面的Json,不一样了
     success: function (xml) {
             $(xml).find("Table1").each(function () {
                 $(this).find("ID").text() + " " + $(this).children("title").attr("id"));
             });
     }
 });
//如果返回的是JOSN文本,则需要使用$.parstJSON(json)或eval("(+json+)")解析

到此这篇关于Jquery使用AJAX方法请求数据的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • jquery 通过ajax请求获取后台数据显示在表格上的方法

    1.引入bootstrap和jquery的cdn <link rel="stylesheet" type="text/css" href="https://cdn.bootcss.com/bootstrap/4.0.0-beta.2/css/bootstrap.min.css" rel="external nofollow" > <script type="text/javascript"

  • jQuery+Ajax+js实现请求json格式数据并渲染到html页面操作示例

    本文实例讲述了jQuery+Ajax+js实现请求json格式数据并渲染到html页面操作.分享给大家供大家参考,具体如下: 1.先给json格式的数据: [ {"id":1,"name":"stan"}, {"id":2,"name":"jack"}, {"id":3,"name":"lucy"}, {"id&quo

  • JQUERY的AJAX请求缓存里的数据问题处理

    参数type由get改成post 添加参数cache并设置成false 添加时间戳 $.ajax({ url: 'ios/index', cache: false, type: 'post', data: { timestamp: new Date().getTime() //params here }, dataType: 'json' }).done(function (data) { //codes here }); 是不是非常的简单呢,希望小伙伴们能够喜欢.

  • 浅析jQuery Ajax请求参数和返回数据的处理

    刚接触学会用jQuery ajax的时候,觉得真东西好神奇,这样就可以把数据取回来了啊.然后我可以把取回来的数据渲染到页面上,一颗赛艇. 之前很早接触到项目,并不知道怎么优雅的去用jquery ajax(现在也不优雅): 那个时候看别人写的代码 有 $.post("","",...) 也有 $.get("","",...) 还有 $.ajax() 当然现在知道点,这些写法都是一个意思,还是习惯用 $.ajax() 写写吧. 之

  • jQuery使用ajax跨域请求获取数据

    跨域是我在日常面试中经常会问到的问题,这词在前端界出现的频率不低,主要原因还是由于安全限制(同源策略, 即JavaScript或Cookie只能访问同域下的内容),因为我们在日常的项目开发时会不可避免的需要进行跨域操作,所以跨域能力也算是前端工程师的基本功之一. var webMethod = "http://localhost:54473/Service1.asmx/HelloWorld"; jQuery.support.cors = true; //之前没有加这句老是提示no tr

  • jQuery中ajax请求后台返回json数据并渲染HTML的方法

    html实例 <table border="0" class="restaurant_food" cellspacing="0" cellpadding="1"> <input type="text" name="dishes" value="" class="seek_product" placeholder="请输入

  • jQuery Ajax请求后台数据并在前台接收

    1.前台使用jQuery ajax请求 $.ajax({ url: "r_getRolePer.action", dataType:'json', data: {userId:"1"}, //请求的附加参数,用json对象 method:'POST', success: function(data){ $.messager.alert('消息',data.add,''); //这里使用的时easyui的格式 }, }); 2.在action里面使用response.

  • Jquery使用AJAX方法请求数据

    一.AJAX请求 1.jQuery.ajax(url,[settings]): 通过 HTTP 请求加载远程数据. jQuery 底层 AJAX 实现.简单易用的高层实现见 $.get, $.post 等.$.ajax() 返回其创建的 XMLHttpRequest 对象.大多数情况下你无需直接操作该函数. Example: 保存数据到服务器,成功时显示信息. $.ajax({ type: "POST", url: "some.php", data: { name:

  • jquery的ajax异步请求接收返回json数据实例

    jquery的ajax异步请求接收返回json数据方法设置简单,一个是服务器处理程序是返回json数据,另一种就是ajax发送设置的datatype设置为jsonp格式数据或json格式都可以. 代码示例如下: 复制代码 代码如下: $('#send').click(function () {     $.ajax({         type : "GET",         url : "a.php",         dataType : "json

  • 基于JQuery的$.ajax方法进行异步请求导致页面闪烁的解决办法

    情景 目前有个需求是在文本框填入内容,自动触发keyup事件,下拉列表会自动过滤相应的选项,但是使用了$,ajax后发现,每次触发事件时,都导致整个网页闪烁,触发了全局ajax事件 代码片段 $.ajax({ type: "POST", url: root + "/xxx, data: requestData, dataType: "json", success: function(data){ // 清空列表 $("#formOpinion #

  • 使用jQuery的ajax方法向服务器发出get和post请求的方法

    打算写个ajax系列的博文,主要是写给自己看,学习下ajax的相关知识和用法,以更好的在工作中使用ajax. 假设有个网站A,它有一个简单的输入用户名的页面,界面上有两个输入框,第一个输入框包含在一个form表单里用来实现form提交,第二个输入框是单独的.没有包含在form里,下面就用这两个输入框来学习下jQuery的ajax. 1,前端的html和javascript代码 页面html <main style="text-align: center; margin: 200px aut

  • jQuery通过ajax方法获取json数据不执行success的原因及解决方法

    1.jquery通过ajax方法获取json数据不执行success回调 问题描述:jquery通过ajax方法获取json数据不执行success回调方法 问题原因:json格式存在问题或不符合标准写法,导致总是执行error回调方法 解决方案:使json格式务必符合下述3个标准写法: 1)键名称:用双引号括起: 2)字符串:用双引号括起: 3)数字,布尔值不需要使用双引号括起 : 注意:一定是双括号! 2.jQuery中ajax使用json数据类型总是跳过success执行error语句 执

  • jQuery使用ajax方法解析返回的json数据功能示例

    本文实例讲述了jQuery使用ajax方法解析返回的json数据功能.分享给大家供大家参考,具体如下: 最近在用jQuery的ajax方法传递接收json数据时发现一个问题,那就是返回的data数据,有时候可以直接作为json数据使用,可有时候又不行.查了些资料,解释如下: $.ajax({ url: ajaxurl, type: "POST", success: function(data){ //假设返回的json数据里有status及info2个属性 //有时候可以直接ajaxo

  • JavaScript原生xmlHttp与jquery的ajax方法json数据格式实例

    javascript版本的ajax发送请求 (1).创建XMLHttpRequest对象,这个对象就是ajax请求的核心,是ajax请求和响应的信息载体,单是不同浏览器创建方式不同 (2).请求路径 (3).使用open方法绑定发送请求 (4).使用send() 方法发送请求 (5).获取服务器返回的字符串   xmlhttpRequest.responseText; (6).获取服务端返回的值,以xml对象的形式存储  xmlhttpRequest.responseXML; (7).使用W3C

  • Jquery中$.ajax()方法参数详解

    俗说好记性不如个烂笔头,下面是jquery中的ajax方法参数详解,这里整理了一些供大家参考. 1.url: 要求为String类型的参数,(默认为当前页地址)发送请求的地址. 2.type: 要求为String类型的参数,请求方式(post或get)默认为get.注意其他http请求方法,例如put和delete也可以使用,但仅部分浏览器支持. 3.timeout: 要求为Number类型的参数,设置请求超时时间(毫秒).此设置将覆盖$.ajaxSetup()方法的全局设置. 4.async:

  • 浅谈Jquery中Ajax异步请求中的async参数的作用

    之前不知道这个参数的作用,上网找了前辈的博客,在此收录到自己的博客,希望能帮到更多的朋友: test.html <a href="javascript:void(0)" onmouseover="testAsync()"> asy.js function testAsync{ var temp; $.ajax({ async: false, type : "GET", url : 'tet.php', complete: functi

  • 详解jquery中$.ajax方法提交表单

    复制代码 代码如下: function postdata(){                        //提交数据函数       $.ajax({                                //调用jquery的ajax方法           type: "POST",                       //设置ajax方法提交数据的形式           url: "ok.php",                   

随机推荐