html_jQuery_ajax
ajax核心对象: XMLHttpRequest
那年创建的XMLHttpRequest对象
function getXhr(){
// 声明对象
var xhr=null;
//根据浏览器不同创建
if(window.XMLHttpRequest){
// 除 ie外的其他浏览器
}else{
// ie浏览器
xhr=new ActiveXObject(‘Microsoft.XMLHttp’);
}
return xhr;
}
ajax 几种常用方法:
- load();
- $.get();
- $.post();
- $.getScript();
- $.getJSON();
- $.ajax;
/*** load***/
$('div').load('url', data, callback );
| url | 需要请求的地址 |
| data | 请求数据,格式一般为key-value形式 |
| callback | 回调函数(只能接收字符串类型(HTML格式)) |
没有请求数据时,请求类型为GET,
发送请求数据时,请求类型是POST,load方法的请求类型由是否请求数据决定。
<html>
<head>
<title></title>
</head>
<body>
<!--注意:谁调用load就把返回的数据写到那个元素里,这里是写入div里-->
<div>xxoo</div>
<script>
user={'name':'xx','age':'123'};
$('div').load('url',user,function(data){
// 形式参数data就是服务器端响应的数据
});
</script>
</body>
</html>
/***$.get()***/
$.get(url ,data, callback, type);
| url | 请求的地址 |
| data | 请求数据,格式一般为key-value形式 |
| callback | 回调函数(可接收多个类型格式的数据) |
| type | 返回内容格式,设置服务器端响应数据格式(xml,html,script,json,text等)默认为HTML格式 |
无论是否发送请求数据,请求类型都是GET。
<html>
<head>
<title></title>
</head>
<body>
<div>xxoo</div>
<script>
$('div').click(function(){
user={'name':'xx','age':'123'};
$.get('url',user,function(data){
// 形式参数data就是服务器端响应的数据
},'json');
});
</script>
</body>
</html>
/***$.post()***/
$.post(url ,data, callback, type);
所有参数和使用方式和get一毛一样,只是请求数据方式是POST方式。
/***$.getScript()***/
$.getScript('url', callback); 动态读取脚本(JavaScript代码脚本)
url: 读取脚本的地址,callback:读取成功后的回调函数
<html>
<head>
<title></title>
</head>
<body>
<input id='btn' type='button' value='getScript'/>
<script>
$('#btn').click(function(){
$.getScript('xx.js'); // 页面中,点击按钮时才读取,并不是页面加载的时候就读取
$.getScript('服务器url/xx.js',function(data){
// 回调函数,data为服务器返回的数据
});
});
</script>
</body>
</html>
/***$.getJSON()***/
由于万维网协议默认不允许跨域请求,所以有了跨域请求
跨域:
完全跨域: --IP不同
跨子域: --IP相同,但端口不同
$.getJSON(url,data,callback);通过GET 方式请求数据
注意url处的写法:'url?callback=?'
<html>
<head>
<title></title>
</head>
<body>
<input id='btn' type='button' value='getJSON'/>
<script>
$('#btn').click(function(){
$.getJSON('url?callback=?',function(data){// 回调函数,data为服务器返回的数据
consoles.log(data);
});
});
</script>
</body>
</html>
别人家的跨域逻辑图:

/***$.ajax()***/
$.ajax(options);基础方法:
| url | 请求地址 |
| type | 请求类型,默认为GET |
| async | 是否异步,默认为true |
| data | 发送的请求数据,key-value 形式 |
| dataType | 设置响应数据格式 :HTML,xml,json |
| success | 请求成功 |
| error | 请求失败 |
请求成功时(success),回调函数function(data , textStatus) { }
- data: 服务器相应的数据内容
- textStatus : AJAX请求状态,success(成功)
请求失败时(error),回调函数function(XMLHttpRequest,textStatus,errorThrown ){ }
- XMLHttpRequest : AJAX 核心对象
- textStatus : AJAX请求状态,error(失败),timeout(超时),notmodified(没有被修改)
- errorRhrown : 错误异常信息
<html>
<head>
<title><title>
</head>
<body>
<input id='n1' name ='pp'/>
<input type = 'button' value = '提交' onclick='SubmitData();'/>
<script src = 'jquery-3.3.1.js'></script>
<script>
function SubmitData(){
// 获取值
var inpVal = $('#n1').val; // 获取用户输入的value值
var inpName = $('#n1').attr('name'); // 获取到pp
// 发送一个ajax请求
$.ajax({
url:'http://127.0.0.1:80000/index/'
data:{'kk':123,inpName:inpVal}, // 默认提交的数据
type:'POST',
success:function(arg){
// 当请求执行完成之后,自动调用
console.log(arg); // 接收到的数据
},
error:function(){
// 当请求错误之后,自动调用
}
});
}
</script>
</body>
</html>
不夸域的小栗子
jsonp(json with padding) : 用于解决主流浏览器的跨域数据访问的问题
<html>
<head>
<title></title>
</head>
<body>
<input type = 'button' value = '获取节目' onclick='SubmitData();'/>
<div id='container'></div>
<script src = 'jquery-3.3.1.js'></script> <script>
function SubmitData(){
$.ajax({
url:'xxxx',
data:{},
type:'GET',
dataType:'jsonp',
jsonp:'callback', // 以jsonp的形式返回并封装到list函数里
jsonpcallback:'list', // callback不能变,list可以变
success:function(arg){
//arg相当于字典
var jsonpArray = arg.data; // 获取到数组
$.each(jsonpArray,function(k,v){
// k,下标 v,数组值
var week = v.week;
var temp = '<h1>'+week+'</h1>';
$('#container').append(temp);
var listArray = v.list;
$.each(listArray,function(kk,vv){
var link = vv.link;
var name = vv.name;
// <a href = 'link'>name</a>
var tempNew = "<a href='" +link +"'>" +name + "</a><br/>";
$('#container').append(tempNew);
});
});
} }); </script>
</body>
</html>
跨域的丑栗子
现除了jsonp解决跨域问题外还有CORS..
html_jQuery_ajax的更多相关文章
随机推荐
- MUI框架 按钮点击响应不好的问题解决办法
MUI框架 按钮点击响应不好的问题 实际例子: $(function (){ mui(document.body).on('tap', '.bindchk', function(e) { //触发一次 ...
- Tomcat系列(4)——Tomcat 组件及架构详细部分
核心部分 1. 定义 Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta ...
- springboot集成freemarker静态资源无法访问
如题配置文件加上 #设定静态文件路径,js,css等.static为你放置静态资源的文件夹名称,也可以叫别的名字.properties加上 spring.mvc.static-path-pattern ...
- JavaScript 高级
在线JS编辑 JS 编写规范 阮一峰 ES 6 阮一峰 廖雪峰 操作文件 <html> <head> <script src='./jquery-2.2.3.min.js ...
- ArcGis Classic COM Add-Ins插件dll的安装与卸载
本文是去年<ArcGis Classic COM Add-Ins插件开发的一般流程 C#>一文(以下称“开发流程”)的后续.“开发流程”中写到会有“安装与卸载”系列的文章,今天把它补上. ...
- 阿里云OSS的Bucket容量大小采集
#!/usr/bin/env python3 #-*- coding: utf-8 -*- # 获取阿里云云监控中 OSS 中的bucket 的bucket大小 from aliyunsdkcore. ...
- python的copy模块理解
首先直接上结论: —–我们寻常意义的复制就是深复制,即将被复制对象完全再复制一遍作为独立的新个体单独存在.所以改变原有被复制对象不会对已经复制出来的新对象产生影响. —–而浅复制并不会产生一个独立的对 ...
- 使用Hexo+github搭建个人博客
目录 创建Github仓库 环境安装 安装Node.js 安装Git 检查安装 安装Hexo 连接Hexo和Github 设置Git的用户名和邮箱 配置SSH 配置Deployment 新建第一篇博客 ...
- orcle数据库表中字段值含有单引号,如何模糊搜索?
例如:T_table表中,name字段值为:字符串含有‘单引号’: SQL模糊搜索语句应该如下:select * from T_table where name like '%含有''单引号''%'
- LeetCode第十六题-找出数组中三数之和最接近目标值的答案
3Sum Closest 问题简介: 给定n个整数的数组nums和整数目标,在nums中找到三个整数,使得总和最接近目标,返回三个整数的总和,可以假设每个输入都只有一个解决方案 举例: 给定数组:nu ...