zoukankan      html  css  js  c++  java
  • 28 ajax

    AjAX
    	刷新部分网页区域,AJAX缓存比较严重
    	AjAX是基于XMLHttpRequest对象实现的
    	
    	var request = new XMLHttpRequest(); // 新建XMLHttpRequest对象	
    	
    	request.onreadystatechange = function () { // 状态发生变化时,函数被回调
    		if (request.readyState === 4) { //判断请求是否完成
    			
    			if (request.status === 200) {//判断是否是一个成功的响应
    				// 成功,通过responseText拿到响应的文本:
    				return success(request.responseText);
    			} else {
    				// 失败,根据响应码判断失败原因:
    				return fail(request.status);
    			}
    		} else {
    			// HTTP请求还在继续...
    		}
    	}
    
    	// 发送请求:
    	request.open('GET', '/api/categories');
    	request.send();
    	
    	
    	安全限制
    		因为浏览器的同源策略导致的,所以请求其他的域名会报错
    		默认情况下,JavaScript在发送AJAX请求时,URL的域名必须和当前页面完全一致
    			完全一致的意思是
    				域名要相同(www.example.com和example.com不同)
    				协议要相同(http和https不同)
    				端口号要相同(默认是:80端口,它和:8080就不同)
    				
    	    AJAX请求外域的方法:
    			1、一是通过Flash插件发送HTTP请求,这种方式可以绕过浏览器的安全限制,但必须安装Flash,并且跟Flash交互。不过Flash用起来麻烦,而且现在用得也越来越少了。
    			2、二是通过在同源域名下架设一个代理服务器来转发,JavaScript负责把请求发送到代理服务器 如:'/proxy?url=http://www.sina.com.cn'
    			3、第三种方式称为JSONP,它有个限制,只能用GET请求,并且要求返回JavaScript
    			4、CORS
    			CORS
    				如果浏览器支持HTML5,那么就可以一劳永逸地使用新的跨域策略:CORS了
    				CORS全称Cross-Origin Resource Sharing,是HTML5规范定义的如何跨域访问资源
    				Origin表示本域,也就是浏览器当前页面的域。当JavaScript向外域(如sina.com)发起请求后,浏览器收到响应后,首先检查Access-Control-Allow-Origin是否包含本域,如果是,则此次跨域请求成功,如果不是,则请求失败,JavaScript将无法获取到响应的任何数据。
    		
    

      

  • 相关阅读:
    Android开发与Sequoyah的安装问题
    Discuz 数据库各表的作用
    jQuery-File-Upload $(...).fileupload is not a function $.widget is not a function
    phpstorm xdebug 无法断点调试问题
    Android Service 启动流程
    Discuz! 全局变量说明
    Discuz! X3 数据表、数据字段说明
    Spring Boot 搭建
    Android组件化开发(注意事项)
    NestedScrollView嵌套RecycleView发生的小问题
  • 原文地址:https://www.cnblogs.com/xuanjian-91/p/10395708.html
Copyright © 2011-2022 走看看