美文网首页
Ajax 在页面不刷新的情况下 获取输出数据

Ajax 在页面不刷新的情况下 获取输出数据

作者: 楼水流云 | 来源:发表于2019-10-07 20:59 被阅读0次

如何和后端交互
1.form 表单提交
2.ajax
3.websocket

ajax方法
1、XMLHttprequest
2、fetch (兼容性)

常见ajax用法
GET
var xhr = new XMLHttpRequest()
xhr.open("GET","/login?username=jirengu&password=123",true) (1.请求方式GET或POST, 2.请求地址内容资源/xxx/xxx, 3.true异步 false同步)
xhr.send()
xhr.addEventListener('load',function(){
if ((xhr.status >= 200 && xhr.status < 300) || xhr.status === 304){
var data = xhr.responseText
console.log(data)
}else{
console.log("error")
}
})

POST
var xhr = new XMLHttpRequest()
xhr.open("POST","/login",true) (1.请求方式GET或POST, 2.请求地址内容资源/xxx/xxx, 3.true异步 false同步)
xhr.send('username=jirengu&password=123') //post拼装链接的方法
xhr.addEventListener('load',function(){
if ((xhr.status >= 200 && xhr.status < 300) || xhr.status === 304){
var data = xhr.responseText
console.log(data)
}else{
console.log("error")
}
})

xhr.status //查看服务器状态码
服务器状态码:
200 数据正常
304 有缓存的状态
404 文件不存在
503 服务器收到请求 但是内部报错

200~300 是成功的
300~400 是重定向相关
400~500 文件的问题
500~503 服务器执行过程出错

xhr.onreadystatechange(){console.log(xhr.readyState)} //服务器交互过程 01234是交互完毕
0 未初始化
1 载入
2 载入完成
3 交互
4 完成

xhr.ontimout = 3000 //延时3秒执行
xhr.ontimeout = function () {} //超时 执行响应
xhr.onerror = function () {console.log("error")} //错误 执行响应

封装一个Ajax
function ajax(opts){
var url = opts.url
var type = opts.type || 'GET'
var dataType = opts.dataType || 'json'
var onsuccess = opts.onsuccess || function(){}
var onerror = opts.onerror || function(){}
var data = opts.data || {}

var dataStr = []
for(var key in data){
    dataStr.push(key + '=' + data[key])
}
dataStr = dataStr.join('&')

if(type === 'GET'){
    url += '?' + dataStr
}

var xhr = new XMLHttpRequest()
xhr.open(type, url, true)
xhr.onload = function(){
    if((xhr.status >= 200 && xhr.status < 300) || xhr.status == 304){
        //成功了
        if(dataType === 'json'){
            onsuccess( JSON.parse(xhr.responseText))
        }else{
            onsuccess( xhr.responseText)
        }
    } else {
        onerror()
    }
}
xhr.onerror = onerror
if(type === 'POST'){
    xhr.send(dataStr)
}else{
    xhr.send()
}

}

ajax({
url: 'http://api.jirengu.com/weather.php',
data: {
city: '北京'
},
onsuccess: function(ret){
console.log(ret)
},
onerror: function(){
console.log('服务器异常')
}
})

相关文章

  • Ajax 在页面不刷新的情况下 获取输出数据

    如何和后端交互1.form 表单提交2.ajax3.websocket ajax方法1、XMLHttpreques...

  • js的基础--ajax

    什么是Ajax 不刷新页面的情况下从服务器获取、提交数据的一种数据交互方式。 Ajax使用步骤 1\创建Ajax对...

  • 原生js学习笔记8——Ajax基础

    什么是Ajax 不刷新页面的情况下从服务器获取、提交数据的一种数据交互方式。 Ajax使用步骤 1\创建Ajax对...

  • 如何处理在Ajax数据传输中的跨域问题

    Ajax Ajax技术,即在不需要刷新页面的情况下从服务器获取数据进行数据交互,而实现Ajax技术的核心就是使用X...

  • AJAX

    一、AJAX简介 AJAX是能够在不刷新页面的情况下,让局部数据跟新的技术 二、AJAX请求数据分为三步 1、创建...

  • ajax的基础用法

    Ajax用法 ajax是能够在不刷新页面的情况下,让网页局部数据更新的技术 Ajax请求数据三剑客 创建对象var...

  • JS解密:AJAX 请求的 jQuery 语法格式样例

    1. Ajax 概念 在浏览器中,我们可以在不刷新页面的情况下,通过 ajax 的方式去获取一些新的内容; Aja...

  • Form表单阻止自动提交最佳实践

    在form表单的提交中我们往往要阻止表单的自动提交,阻止页面自动刷新,运用ajax异步获取数据动态刷新页面的效果,...

  • AJAX总结

    最近学习使用AJAX来获取后台数据,通过使用AJAX我们可以实现页面无刷新自动获取最新数据,是一种非常实用的创建快...

  • ajax与jsonp的区别及用法

    首先我们应该知道ajax和jsonp可以与后台通信,获取数据和信息,但是又不用刷新整个页面,实现页面的局部刷新。接...

网友评论

      本文标题:Ajax 在页面不刷新的情况下 获取输出数据

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