AJAX

作者: 索伯列夫 | 来源:发表于2018-10-31 13:46 被阅读0次

AJAX:异步的javascript和XML

技术点:
1.使用XMLHTTPRequest发请求
2.服务器返回XML格式的字符串  //当然我们现在都在用json
3.JS解析XML,并更新局部页面

XMLHttpRequest 的实例属性:
1.属性readyState的值为4表示请求完成
2.XMLHttpRequest.onreadystatechange属性指向一个监听函数。实例的readyState属性变化,就会执行这个属性
3.XMLHttpRequest.responseText属性返回从服务器接收到的字符串
4.XMLHttpRequest.status属性返回一个整数,表示服务器回应的 HTTP 状态码。

请使用原生JS来发送AJAX请求

//html
<button id="myButton">click</button> 

//js
myButton.addEventListener('click',(e)=>{
  let request = new XMLHttpReuest()
  request.open('GET','/xxx')
  request.send()
  request.onreadystatechange = ()=>{
    if(request.readyState == 4){
      if(request.status >= 200 && request.status < 300){
        let string = request.reponseText
        let obj = JSON.parse(string)
      }
    }
  }
})

form和AJAX的区别:

比如我们通过form,可以给百度发get请求,而用AJAX就会失败。
因为原页面用form提交到另一个域名后,原页面的脚本无法获取新页面的内容。所以浏览器认为这是安全的。而AJAX是可以读取响应内容的,因此浏览器不允许这么做。其实在这个例子中,就可以看到,请求已经发出去了,只是拿不到响应而已。
所以浏览器这个策略的本质是,一个域名的JS,在未经允许的情况下,不得读取另一个域名的内容。但是浏览器并不组织你向另一个域名发送请求。

//通过from
<form action="https://www.baidu.com" method='GET'>
  <input type="password" name="password">
  <input type="submit">
</form>
//通过ajax
myButton.addEventListener('click',(e)=>{
  let request = new XMLHttpRequest()
  request.open('GET','https://www.baidu.com')
  request.send()
  request.onreadystatus = ()=>{
    
  }
})

浏览器一个重要的特性:

也就是只有协议+域名+端口 一模一样才允许发AJAX请求

CORS(跨域资源共享)

MDN上的解释:它使用额外的 HTTP头来告诉浏览器 让运行在一个 origin (domain) 上的Web应用被准许访问来自不同源服务器上的指定的资源。当一个资源从与该资源本身所在的服务器不同的域或端口请求一个资源时,资源会发起一个跨域 HTTP 请求

总结为一句话就是:让你想访问的后台服务器,加一句话,给你一个权限,让你可以访问。

和JSONP的帖子中一样,我们在本地分别启动:http://hua.com:8000,http://zhen.com:8001,现在我们已经启动了两个服务,
我们现在在hua.com想访问zhen.com中的数据。在AJAX中已经设置request.open('get','http://zhen.com:8001/xxx'),最开始访问肯定是失败的啊。因为你的url是hua.com:8000,而你想访问的是另一个url,所以拿不到资源。

那么我们在你想访问的zhen.com:8001的服务器中进行设置:
添加HTTP响应头,response.setHeader('Access-Control-Allow-Origin','http://hua.com:8000'),就相当于告诉服务器,是朋友,别拦我。这样,我们就可以从hua.com拿到zhen.com的资源了。

相关文章

  • AJAX

    主要内容: ajax 是什么、原生ajax 写法和jQuery ajax写法。 AJAX 是什么 ajax,即As...

  • JavaScript进阶知识点--AJAX及JSON

    AJAX 关于 AJAX 什么是 AJAX AJAX 的全称是 Asynchronous JavaScript a...

  • HTML5权威指南 | 第五部分 高级功能

    三十二、使用AJAX(上) Ajax起步: 使用Ajax事件: Ajax请求的错误处理: 中止Ajax请求: 三十...

  • ajax学习笔记

    Ajax学习笔记 Ajax简介 1. Ajax是什么? Ajax : Asynochronous javascri...

  • AJAX

    一、简介 AJAX菜鸟教程 什么是 AJAX ? AJAX = 异步 JavaScript 和 XML。 AJAX...

  • js之AJAX复习

    异步交互和同步交互 什么是Ajax? Ajax的工作原理。 Ajax包含的技术: Ajax的缺陷: Ajax的核心...

  • 复习jQuery - ajax

    jQuery ajax - ajax() 方法 $.ajax({ url:'oo.php', ...

  • jQuery中Ajax请求的使用和四个步骤示例

    ajax() 方法用于执行 AJAX(异步 HTTP)请求,所有的 jQuery AJAX 方法都使用 ajax(...

  • ajax

    1、什么是ajax? 2、ajax的原理 3、ajax的核心对象 4、ajax的优点: ajax的缺点: 被jqu...

  • ajax

    Ajax 1 - 请求纯文本 Ajax 2 - 请求JSON数据 Ajax 3 - 请求Github接口 Ajax...

网友评论

      本文标题:AJAX

      本文链接:https://www.haomeiwen.com/subject/xdootqtx.html