美文网首页
ajax:asynchronous javascript and

ajax:asynchronous javascript and

作者: 罗斯福 | 来源:发表于2019-12-24 00:21 被阅读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>
    
    

    相关文章

      网友评论

          本文标题:ajax:asynchronous javascript and

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