1. 什么是ajax?

  ajax的全称 Asynchronous(异步) JavaScript and XML。

  ajax是一种用于创建快速动态网页的技术。

  主要用于前后台的交互,在前后台的交互中还有一种表单提交,不过现在表单已经被废弃了。

  ajax并不是一种全新的语言,而是一种使用现有标准的一种方法。

  ajax最大的优点是在不重新加载整个页面的情况下,可以与服务器交换数据并更新部分网页内容。

2. ajax的提交方式

  提交方式有8中,其中最常用的只有2种,分别是GET和POST,两者最大的区别是,get提交的参数在地址栏中,post提交的参数在请求体中,两者相比,post的安全性高于get。

  get的参数有限制,大约是2000个字符左右,而post的参数在网速良好的情况下,可以达到无限。

3. 原生ajax

  XMLHttpRequest 是 AJAX 的基础,

  所有现代浏览器均支持 XMLHttpRequest 对象(IE5 和 IE6 使用 ActiveXObject)。

  XMLHttpRequest 用于在后台与服务器交换数据。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。

  因此,在创建ajax对象-xmlhttprequest对象的时候,我们的考虑兼容性的问题

  ajaxget提交:

<script>
// 一般情况下只能在有服务的环境下发送请求 // ajax是局部刷新 // 1.创建ajax对象-xmlhttprequest对象
// XMLHttpRequest 对象 // variable=new XMLHttpRequest(); 新版本的浏览器
// variable=new ActiveXObject("Microsoft.XMLHTTP"); //老版本的IE ,IE5,IE6
var xhr;
if(window.XMLHttpRequest){ //常规,如果有,直接使用
xhr = new XMLHttpRequest();
}else{ //如果没有,老版本IE
xhr = new ActiveXObject("Microsoft.XMLHTTP");
}
console.log(xhr)
console.log("状态码:" + xhr.readyState);
console.log('响应码:' + xhr.status);
console.log('响应文本:' + xhr.responseText);
console.log('步骤一完成') // 2.通过监听ajax的状态的改变来监听
xhr.onreadystatechange = function(){
console.log('xhr的状态码发生了改变');
console.log("状态码:" + xhr.readyState);
console.log('响应码:' + xhr.status);
console.log('响应文本:' + xhr.responseText);
console.log('\n');
}
console.log('步骤二完成') // 3.创建请求的消息,连接服务器 状态码0=>1
xhr.open('GET','07.php',true); //最后一个参数是bool,表示同步||异步,true异步
console.log('步骤三完成') // 4.发送
xhr.send(null); //如果是post请求,就放post参数,如果是get请求,发送null就行了
</script>

  ajaxpost提交:

<script>
// 1.
var xhr;
if(window.XMLHttpRequest){ //常规,如果有,直接使用
xhr = new XMLHttpRequest();
}else{ //如果没有,老版本IE
     xhr = new ActiveXObject("Microsoft.XMLHTTP");
}
// 2.
xhr.onreadystatechange = function(){
if(xhr.readyState == 4){
if (xhr.status == 200) {
console.log(xhr.responseText);
p01.innerHTML = xhr.responseText;
}
}
}
// 3.
xhr.open('POST','http://localhost:8888/0220ajax/09.php',true);
// 3.5 在发送post请求的时候,你得告诉服务器你发送的是一个什么
xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");
// 4.发送
xhr.send('strName=' + uname.value + '&strScore=' + score.value);
</script>

  getpost提交的区别就在于提交时参数的位置,

  get是在第三步的时候

  xhr.open('POST','http://localhost:8888/0220ajax/09.php',true);        在09.php后面添加参数。

 而post是在最后一步的时候,将参数拼接上去。
 xhr.send('strName=' + uname.value + '&strScore=' + score.value);

4. jQuery的ajax
  
$("#btn").click(function(){
$.ajax({
type : "POST", //提交的类型
url : "http://192.168.9.154:8888/0221ajax/01.php", //地址
data : { 参数
uname : $("#username").val()
},
success : function(data){ //data就是原生的xhr.responseText
console.log(data);
},
error : function(err){ //错误的
console.log(err)
}
})
})

5. 跨域问题

  在ajax的提交中出现跨域时,如何解决?

  跨域,首先要明白浏览器同源策略机制,那什么是同源策略机制?

  同源策略阻止从一个源加载的文档或脚本中获取或设置另一个源加载的文档的属性。

  在控制台出现类似的错误 :No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:8888' is therefore not allowed access.

  基本上都是跨域问题。

  有时端口号没有写的都是80端口,也就是用的最多的端口。

 http://       www.bailiban.com :       8888       /img/01.jpg?name=jack
https:
协议 域名 端口号 请求的资源路径 协议,子域名,主域名,端口号,只要有一个不同就是跨域,资源就不能通过ajax进行访问

  解决方法:

  1.代理服务器

  2.设置请求头 在服务端语言增加两行代码

     res.setHeader("Access-Control-Allow-Origin","*");

    res.setHeader("Access-Control-Allow-Methods","DELETE,PUT,POST,GET,OPTIONS");

  3.JSONP

    JSONP原理上是利用 script 标签的 src 属性,因为同源策略对 scropt 的 src 属性不起作用。

 

  

ajaj简介的更多相关文章

  1. ASP.NET Core 1.1 简介

    ASP.NET Core 1.1 于2016年11月16日发布.这个版本包括许多伟大的新功能以及许多错误修复和一般的增强.这个版本包含了多个新的中间件组件.针对Windows的WebListener服 ...

  2. MVVM模式和在WPF中的实现(一)MVVM模式简介

    MVVM模式解析和在WPF中的实现(一) MVVM模式简介 系列目录: MVVM模式解析和在WPF中的实现(一)MVVM模式简介 MVVM模式解析和在WPF中的实现(二)数据绑定 MVVM模式解析和在 ...

  3. Cassandra简介

    在前面的一篇文章<图形数据库Neo4J简介>中,我们介绍了一种非常流行的图形数据库Neo4J的使用方法.而在本文中,我们将对另外一种类型的NoSQL数据库——Cassandra进行简单地介 ...

  4. REST简介

    一说到REST,我想大家的第一反应就是“啊,就是那种前后台通信方式.”但是在要求详细讲述它所提出的各个约束,以及如何开始搭建REST服务时,却很少有人能够清晰地说出它到底是什么,需要遵守什么样的准则. ...

  5. Microservice架构模式简介

    在2014年,Sam Newman,Martin Fowler在ThoughtWorks的一位同事,出版了一本新书<Building Microservices>.该书描述了如何按照Mic ...

  6. const,static,extern 简介

    const,static,extern 简介 一.const与宏的区别: const简介:之前常用的字符串常量,一般是抽成宏,但是苹果不推荐我们抽成宏,推荐我们使用const常量. 执行时刻:宏是预编 ...

  7. HTTPS简介

    一.简单总结 1.HTTPS概念总结 HTTPS 就是对HTTP进行了TLS或SSL加密. 应用层的HTTP协议通过传输层的TCP协议来传输,HTTPS 在 HTTP和 TCP中间加了一层TLS/SS ...

  8. 【Machine Learning】机器学习及其基础概念简介

    机器学习及其基础概念简介 作者:白宁超 2016年12月23日21:24:51 摘要:随着机器学习和深度学习的热潮,各种图书层出不穷.然而多数是基础理论知识介绍,缺乏实现的深入理解.本系列文章是作者结 ...

  9. Cesium简介以及离线部署运行

    Cesium简介 cesium是国外一个基于JavaScript编写的使用WebGL的地图引擎,一款开源3DGIS的js库.cesium支持3D,2D,2.5D形式的地图展示,可以自行绘制图形,高亮区 ...

随机推荐

  1. day04 流程控制

    在python中流程控制主要有三种:顺序流程.分支流程.循环流程 1.顺序流程:在宏观上,python程序的运行就是自上而下的顺序流程: 2.分支流程:分支流程主要是  if...else....流程 ...

  2. ubuntu命令安装

    1.当make时,发现没有对应的命令: apt-get install build-essential 安装工具,可解决这个问题

  3. GIt -- fatal: refusing to merge unrelated histories 问题处理

    今晚碰到这个问题-- fatal: refusing to merge unrelated histories 想了一下,为什么就这样了? 因为我是先本地创建了仓库,并添加了文件,然后再到github ...

  4. MAC本apache+php配置虚拟域名时踩的坑

    昨天在调试Mac自带的Apache+PHP配置域名时,调试的让我怀疑人生.顿时心里一万个草泥马,我就是配置个虚拟域名啊,这么让我受伤 . 1 首先检查一下Apache是否开启, qutao@bogon ...

  5. #10038.A Horrible Poem

    #10038.A Horrible Poem 题目传送门 思路解析 既然这道题目在hash板块里,那么自然就可以想到用hash做这道题目. 首先我们可以用hash数组存储字符串的前缀的hash值. 因 ...

  6. python之yield的一些应用

    生成器 yield是用于生成器.生成器通俗的认为,在一个函数中,使用了yield来代替return的位置的函数,就是生成器.它不同于函数的使用方法是:函数使用return来进行返回值,每调用一次,返回 ...

  7. RROR: [XSIM 43-3238] Failed to link the design.

    仿真时遇到上述错误,在tcl下运行 set_property -name {xsim.elaborate.xelab.more_options} -value {-cc clang} -objects ...

  8. Django—视图

    索引 一.URLconf 二.视图 三.HttpReqeust对象 3.1 QueryDict对象 3.2 GET和POST属性 四.HttpResponse对象 4.1 子类JsonResponse ...

  9. Centos7创建支持ssh服务的docker镜像

    如何在centos7中使用docker创建一个支持ssh连接的容器 1.拉取centos7.4镜像(由于7.4目前是最稳定的版本,所以推荐使用centos7.4) docker pull centos ...

  10. trie上记忆化搜索,括号匹配——cf1152D好题!

    一开始以为是卡特兰数的性质,,后来发现其实是dp,但是用记忆化搜索感觉更方便一点先来考虑字典树上的问题 设要求的序列长度是2n,我们用二元组(a,b)来表示前面长为a的序列中出现的 '(' - ')' ...