博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python菜鸟之路:Jquery Ajax的使用
阅读量:5908 次
发布时间:2019-06-19

本文共 4577 字,大约阅读时间需要 15 分钟。

Ajax概述

  Ajax就是通过 HTTP 请求加载远程数据。通常用于定制一些http请求来灵活的完成前端与后端的数据交互需求。

  注意,所有的选项都可以通过$.ajaxSetup()函数来全局设置。

  JQuery Ajax之所以能发送http请求, 是调用了html中的XMLHttpRequest对象(原生ajax)。

  另外还有一种跨域Ajax。这个会在最后介绍到 。

Ajax的一般格式

$.ajax({     type: 'POST',     url: url ,    data: data ,    success: success ,    dataType: dataType});

Ajax的参数说明

参数名 类型 描述
url String (默认: 当前页地址) 发送请求的地址。
type String (默认: "GET") 请求方式 ("POST" 或 "GET"), 默认为 "GET"。注意:其它 HTTP 请求方法,如 PUT 和 DELETE 也可以使用,但仅部分浏览器支持。
timeout Number 设置请求超时时间(毫秒)。此设置将覆盖全局设置。
async Boolean (默认: true) 默认设置下,所有请求均为异步请求。如果需要发送同步请求,请将此选项设置为 false。注意,同步请求将锁住浏览器,用户其它操作必须等待请求完成才可以执行。
beforeSend Function 发送请求前可修改 XMLHttpRequest 对象的函数,如添加自定义 HTTP 头。XMLHttpRequest 对象是唯一的参数。
function (XMLHttpRequest) {  this; // the options for this ajax }
cache Boolean (默认: true) jQuery 1.2 新功能,设置为 false 将不会从浏览器缓存中加载请求信息。
complete Function 请求完成后回调函数 (请求成功或失败时均调用)。参数: XMLHttpRequest 对象,成功信息字符串。
function (XMLHttpRequest, textStatus) {  this; // the options for this ajax request}
contentType String (默认: "application/x-www-form-urlencoded") 发送信息至服务器时内容编码类型。默认值适合大多数应用场合。
data Object,
String
发送到服务器的数据。将自动转换为请求字符串格式。GET 请求中将附加在 URL 后。查看 processData 选项说明以禁止此自动转换。必须为 Key/Value 格式。如果为数组,jQuery 将自动为不同值对应同一个名称。如 {foo:["bar1", "bar2"]} 转换为 '&foo=bar1&foo=bar2'。
dataType String

预期服务器返回的数据类型。如果不指定,jQuery 将自动根据 HTTP 包 MIME 信息返回 responseXML 或 responseText,并作为回调函数参数传递,可用值:

"xml": 返回 XML 文档,可用 jQuery 处理。

"html": 返回纯文本 HTML 信息;包含 script 元素。

"script": 返回纯文本 JavaScript 代码。不会自动缓存结果。

"json": 返回 JSON 数据 。

"jsonp": JSONP 格式。使用 JSONP 形式调用函数时,如 "myurl?callback=?" jQuery 将自动替换 ? 为正确的函数名,以执行回调函数。

 

 

 

 

 

error Function (默认: 自动判断 (xml 或 html)) 请求失败时将调用此方法。这个方法有三个参数:XMLHttpRequest 对象,错误信息,(可能)捕获的错误对象。
function (XMLHttpRequest, textStatus, errorThrown) {  // 通常情况下textStatus和errorThown只有其中一个有值   this; // the options for this ajax request}
global Boolean (默认: true) 是否触发全局 AJAX 事件。设置为 false 将不会触发全局 AJAX 事件,如 ajaxStart 或 ajaxStop 。可用于控制不同的Ajax事件
ifModified Boolean (默认: false) 仅在服务器数据改变时获取新数据。使用 HTTP 包 Last-Modified 头信息判断。
processData Boolean (默认: true) 默认情况下,发送的数据将被转换为对象(技术上讲并非字符串) 以配合默认内容类型 "application/x-www-form-urlencoded"。如果要发送 DOM 树信息或其它不希望转换的信息,请设置为 false。
success Function 请求成功后回调函数。这个方法有两个参数:服务器返回数据,返回状态
function (data, textStatus) {  // data could be xmlDoc, jsonObj, html, text, etc...  this; // the options for this ajax request}

Ajax的一些例子

//1.$.ajax带json数据的异步请求var aj = $.ajax( {      url:'productManager_reverseUpdate',// 跳转到 action      data:{               selRollBack : selRollBack,               selOperatorsCode : selOperatorsCode,               PROVINCECODE : PROVINCECODE,               pass2 : pass2      },      type:'post',      cache:false,      dataType:'json',      success:function(data) {          if(data.msg =="true" ){              // view("修改成功!");              alert("修改成功!");              window.location.reload();          }else{              view(data.msg);          }       },       error : function() {            // view("异常!");            alert("异常!");       }  });//2.$.ajax序列化表格内容为字符串的异步请求function noTips(){      var formParam = $("#form1").serialize();//序列化表格内容为字符串      $.ajax({          type:'post',              url:'Notice_noTipsNotice',          data:formParam,          cache:false,          dataType:'json',          success:function(data){          }      });  }  //3.$.ajax拼接url的异步请求var yz=$.ajax({       type:'post',       url:'validatePwd2_checkPwd2?password2='+password2,       data:{},       cache:false,       dataType:'json',       success:function(data){            if( data.msg =="false" ) //服务器返回false,就将validatePassword2的值改为pwd2Error,这是异步,需要考虑返回时间            {                 textPassword2.html("业务密码不正确!");                 $("#validatePassword2").val("pwd2Error");                 checkPassword2 = false;                 return;             }        },        error:function(){}  }); //4.$.ajax拼接data的异步请求$.ajax({       url:'<%=request.getContextPath()%>/kc/kc_checkMerNameUnique.action',       type:'post',       data:'merName='+values,       async : false, //默认为true 异步       error:function(){          alert('error');       },       success:function(data){          $("#"+divs).html(data);       }});

Ajax需要注意的一些地方

  1.data主要方式有三种,html拼接的,json数组,form表单经serialize()序列化的;通过dataType指定,不指定智能判断。

  2.$.ajax只提交form以文本方式,如果异步提交包含<file>上传是传过不过去,需要使用jquery.form.js的$.ajaxSubmit

 

Ajax跨域请求

  默认情况下,ajax只能给自己的域名发送ajax请求。

  跨域请求是指通过ajax去访问非本网站域名,与其他网站进行数据交互。这种请求受到浏览器“同源策略”的限制,会被浏览器本身拦截(在收到回应数据的时候被浏览器拦截,实际请求已经发送出去)。

解决跨域的两种方式

  jsonp 和 跨域资源共享就是解决ajax跨域请求的两种方式。具体案例,可以查看链接:

 

 

 

 

  

 

转载于:https://www.cnblogs.com/jishuweiwang/p/5896961.html

你可能感兴趣的文章
Android开发资料[2012-12-16]
查看>>
Android 蓝牙开发:第一日
查看>>
CSS中的after
查看>>
gPodder 3.4 发布,播客接收器
查看>>
Extjs DomHelper Template
查看>>
学几个vim快捷键
查看>>
EventThread线程对VSync的接收
查看>>
[转]WCF+WF双剑合璧构建微软的SOA系列(一):从一个简单的Demo开始
查看>>
Linux下完整的RMAN增量备份shell脚本
查看>>
Java笔记01:异常处理Throwable类
查看>>
Ubuntu和RedHat的区别
查看>>
nodejs上HTML分析利器node-jquery
查看>>
iReport+jasperReports制作WEB报表
查看>>
分享:十Python之Http Web服务(网页抓取二)
查看>>
IBM is still thinking!
查看>>
分享一个用Xcode4实现基于Webservice用户登录的iphone程序
查看>>
EZNamespaceExtensions.Net v2013增加对上下文菜单、缩略图、图标、属性表的支持
查看>>
WebGL学习笔记-使用3D引擎threeJS实现星空粒子移动
查看>>
目管理、日志提交 软件 Redmine
查看>>
COM编程之二 接口
查看>>