ajax入门

ajax

ajax,全称是,
Asynchronous [eɪˈsɪŋkrənəs] JavaScript and XML(异步的 JavaScript 和 XML)

XMLHttpRequest对象,主要用它来实现与服务器交换数据

XMLHttpRequest,它的对象的,

- open(),发服务器发起请求,其实就是从服务器要东西
	get/post
	url
	true/false,是否同步

- send( str ),向服务器发送信息,就是发送东西到服务器
	str,是字符串,只是用于post方法

_xmlhttp.open(‘get’, 网址,同步或异步)

不管是open请求,还是send发送,都需要获得服务器的响应。

- text,responseText
	主要是使用这个字符串格式的数据;

- xml,responseXML
	xml格式的响应数据,体积比较大,
	并且解析的时候还需要专门的xml格式的解析。

XMLHttpRequest对象,它有三个属性,
第一个,onreadystatechange 事件,
当 readyState 发生变化时,触发 onreadystatechange

其实中之二,
readyState,
是用来保存着 XMLHttpRequest 对象的状态,
0 - 请求初始化;
1 - 服务已经连接;
2 - 请求已经接收;
3 - 请求处理中
4 - 请求已经完成,且响应已经就绪
在正常情况下,这5个事件的触发顺序是,
0- 1
1- 2
2- 3
3- 4

第三个,status,
服务器的状态,200是一切正常;404是未找到页面,就是不正常。

要操作XMLHttpRequest对象的时候,首先要响应 onreadystatechange 事件,

写法
// 创建XMLHttpRequest对象
        var _xhr = new XMLHttpRequest();

        //响应变化  onreadystatechange .readyState  .status
        _xhr.onreadystatechange = function() {
            if (_xhr.readyState == 4 && _xhr.status == 200) {
                console.log(JSON.parse(_xhr.responseText))
                    //JSON JavaScript对象表示法 是字符串格式,要使用双引号
                    // JSON.parse()将JSON格式的字符串转变为js对象
                var _d = JSON.parse(_xhr.responseText);
                var _doc = document.createElement('h1');
                _doc.innerHTML = _d.txt;
                document.body.appendChild(_doc);

            }
        }

        //发送请求
        // 涉及跨域,url首先要写完整,其次在考虑解决跨域问题的方法
        _xhr.open('get', 'http://127.0.0.1:8888/xx/ajax/get', true)
        _xhr.send()

接口

// 这个js文件是服务端.要解决跨域也是在服务端解决
// 引入express
var express = require('express');
var app = express();
// 解决跨域问题
app.all('*', function(req, res, next) {
    res.header("Access-Control-Allow-Origin", "*");
    res.header("Access-Control-Allow-Headers", "X-Requested-With");
    res.header("Access-Control-Allow-Methods", "PUT,POST,GET,DELETE,OPTIONS");
    res.header("X-Powered-By", ' 3.2.1')
    res.header("Content-Type", "application/json;charset=utf-8");
    next();
});
//接口
app.get('/xx/ajax/get', function(req, res) {
    var _obj = {
        txt: '这是ajax的测试接口数据'
    }
    res.send(_obj)
})
app.listen(8888, function() {
    console.log('8888 ajax测试接口,已经运行了');
})
// No 'Access-Control-Allow-Origin' 这个报错信息就是跨域问题

设置中间件

// 入口文件,设置静态目录,用以访问 .html 文件
var express = require('express');
var app = express();
// 设置静态目录
app.use( express.static('pro_dev') );
app.listen(5699,function(){
	console.log('5699,静态目录,已经运行了');
});

跨域

跨域是指,通过js在不同的域之间进行数据传输或通信。

跨域报错的三种触发条件,
只要协议,域名,端口号其中有一个不同,就是跨域。

1、网址不同;
		www.a.com
		www.b.com
2、端口不同;
	www.a.com:1111,
	www.a.com:1112
3、协议不同;
	http://www.a.com:1234
	https://www.a.com:1234

// 解决跨域问题
app.all('*', function(req, res, next) {
    res.header("Access-Control-Allow-Origin", "*");
    res.header("Access-Control-Allow-Headers", "X-Requested-With");
    res.header("Access-Control-Allow-Methods", "PUT,POST,GET,DELETE,OPTIONS");
    res.header("X-Powered-By", ' 3.2.1')
    res.header("Content-Type", "application/json;charset=utf-8");
    next();
});

JSON

JSON: JavaScript Object Notation(JavaScript 对象表示法)
它是跨平台的存储和交换文本信息的语法。比xml更小、更快。

JSON.stringify()
它是把js对象变成JSON字符串;

JSON.parse()
它是把JSON字符串,变成js对象;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值