ajax:asynchronous javascript and

2019-12-24  本文已影响0人  罗斯福

如何发送请求

1,form可以发送请求,但是将导致刷新页面或者新开页面
2,a标签可以发送get请求,同样将导致刷新页面和新开页面
3,image可以发送get请求,但是请求的内容只能是图片
4,link可以发送get请求,但是请求的内容只能是css,和favicon的形式
5,script可以发送get请求,但是只能通过动态控制scrip脚本运行的方式

Ajax实现步骤

1.使用XMLHttprequest发请求
2,服务器返回XML形式的字符串,后面逐渐使用json形式返回字符串
3,JS解析XML并更新局部页面

json

json:javascript object Notation,是一种由[道格拉斯·克罗克福特]构想和设计、轻量级的[数据交换语言]该语言以易于让人阅读的文字为基础,用来传输由属性值或者序列性的值组成的数据对象,源自javascript
祥情请见:https://www.json.org/json-en.html

如何使用XMLhttprequest

var http = require('http')
var fs = require('fs')
var url = require('url')
var port = process.argv[2]

if(!port){
  console.log('请指定端口号好不啦?\nnode server.js 8888 这样不会吗?')
  process.exit(1)
}

var server = http.createServer(function(request, response){
  var parsedUrl = url.parse(request.url, true)
  var pathWithQuery = request.url 
  var queryString = ''
  if(pathWithQuery.indexOf('?') >= 0){ queryString = pathWithQuery.substring(pathWithQuery.indexOf('?')) }
  var path = parsedUrl.pathname
  var query = parsedUrl.query
  var method = request.method

  /******** 从这里开始看,上面不要看 ************/

  console.log('存在监听' + pathWithQuery)

  if(path === '/'){  // 如果用户请求的是 / 路径
    var string = fs.readFileSync('index.html','utf8')  // 就读取 index.html 的内容
    response.setHeader('Content-Type', 'text/html;charset=utf-8')  // 设置响应头 Content-Type
    response.write(string)   // 设置响应消息体
  response.end()
  }else if(path==='/xxxx'){
  response.statusCode=200
   response.setHeader('Content-Type','text/json;charset=utf-8')
  //  response.setHeader('Acess-Control-Allow-Origin','http://stu.con:8002')
   response.write(`
     {
     "note":{
       "to":"你",
       "from":"我",
       "heading":"见面了",
       "content":"hi"
     }
    }
   `)
   
   response.end()
  }else{
    response.statusCode = 404
    response.setHeader('Content-Type', 'text/html;charset=utf-8')
    response.write('呜呜呜')
    response.end()
  }

  /******** 代码结束,下面不要看 ************/
})

server.listen(port)
console.log('监听 ' + port + ' 成功\n请用在空中转体720度然后用电饭煲打开 http://localhost:' + port)

以上为简单的后端服务代码
以下为前端的请求代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>首页</title>
</head>
<body>
<button id="button">点我</button>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js">
</script>

<script>
button.addEventListener('click', (e)=>{
    let request=new XMLHttpRequest()
    request.open('get','/xxxx')//配置request
    request.send()
    request.onreadystatechange=()=>{
        if (request.readyState===4) {
            console.log('请求响应完毕了')
            console.log(request.status)
            if(request.status>=200&&request.status<300){
             console.log('说明请求成功')
             console.log(typeof request.responseText)
             console.log(request.responseText)
             let string=request.responseText
             let object=JSON.parse(request.responseText)
             console.log(typeof object)
        console.log(object)
        console.log('object.note')
        console.log(object.note)
            }else if(request.status>400){
            console.log('说明请求失败')
        }
    }
}

})

</script>

</body>
</html>

上一篇 下一篇

猜你喜欢

热点阅读