zoukankan      html  css  js  c++  java
  • 第三方包 vue-resource

    使用 vue-resource 发起 get post jsonp 请求

    注意:

    假设当前服务器后台监听的端口是 7000

    1,get post 既可以请求数据,也可以发送数据

    2,请求的是 服务器 所在的 url 路径(http://localhost:7000/add),当然,如果你的客服端也是由 node 后台直接读写文件返回的 html 文件。那么证明 该 html 页面也是放在该和后台监听的 同一个端口下面。就可以不写全请求的url(如:/add 注意:那么就相当于请求; http://localhost:7000/add

    3 , jsonp 是用 script 标签来完成跨域请求的 (请求 url,然后返回 res.end('cb(data))')由html里面书写 js 函数自行操作

     

    注意:form 表单提交数据,如果 在 <input type='submit‘> 中添加点击事件,那么 form 表单提交的数据就不会在 url 处 自动拼接数据(/add?id=&name=)。拼接后是会有数据的 (/add?id=123&name= zhangsan)

     

    Vue.http.get('/someUrl', [config]).then(successCallback, errorCallback);
    Vue.http.post('/someUrl', [body], [config]).then(successCallback, errorCallback);
    ​
    // in a Vue instance
    this.$http.get('/someUrl', [config]).then(successCallback, errorCallback);
    this.$http.post('/someUrl', [body], [config]).then(successCallback, errorCallback);
    ​
    ​
     this.$http.jsonp('https://suggest.taobao.com/sug?q=笔&callback=sug').then(function (result) {
                    console.log(result);
                    console.log(result.body);
                  })

    List of shortcut methods:

    • get(url, [config])

    • head(url, [config])

    • delete(url, [config])

    • jsonp(url, [config])

    • post(url, [body], [config])

    • put(url, [body], [config])

    • patch(url, [body], [config])

    Config

    ParameterTypeDescription
    url string URL to which the request is sent
    body Object, FormData, string Data to be sent as the request body
    headers Object Headers object to be sent as HTTP request headers
    params Object Parameters object to be sent as URL parameters
    method string HTTP method (e.g. GET, POST, ...)
    responseType string Type of the response body (e.g. text, blob, json, ...)
    timeout number Request timeout in milliseconds (0 means no timeout)
    credentials boolean Indicates whether or not cross-site Access-Control requests should be made using credentials
    emulateHTTP boolean Send PUT, PATCH and DELETE requests with a HTTP POST and set the X-HTTP-Method-Override header
    emulateJSON boolean Send request body as application/x-www-form-urlencoded content type
    before function(request) Callback function to modify the request object before it is sent
    uploadProgress function(event) Callback function to handle the ProgressEvent of uploads
    downloadProgress function(event) Callback function to handle the ProgressEvent of downloads

    1. get post jsonp三种请求方式

    <!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>
        <script type="text/javascript" src="../vue.js"></script>
        <!-- 注意:vue-resource 依赖于 Vue,所以要注意加载顺序 -->
        <script type="text/javascript" src="../vue-resource.min.js"></script></head>
    <body>
        <div id="app">
            <input type="button" name="" value="get请求" @click='getInfo'>
            <input type="button" name="" value="post请求" @click='postInfo'>
            <input type="button" name="" value="jsonp请求" @click='jsonpInfo'>
        </div>
    ​
    ​
    <script type="text/javascript">
    ​
    ​
    ​
        new Vue({
             el:'#app',
             data:{},
             methods:{
                 
                getInfo() {
                  this.$http.get('https://api.apiopen.top/singlePoetry').then(function (result) {
                    console.log(result.data);
                  })
                },
                 
                /*
                三个参数:
                  参数1:url请求路径 
                  参数2:{body}请求体内容
                  参数3:config 配置项 比如设置(application/x-www-form-urlencoded)
                        提交数据的方式。
                
                */
                postInfo() {
                  this.$http.post('https://api.apiopen.top/singlePoetry',{发送的数据},{emulateJSON:true}).then(function (result) {
                    console.log(result);
                  })
                },
                jsonpInfo() {
                  this.$http.jsonp('https://suggest.taobao.com/sug?q=笔&callback=sug').then(function (result) {
                    console.log(result);
                    console.log(result.body);
                  })
                }
             }
        });
    ​
    ​
    </script>
    </body>
    </html>

    ###

    node 仿 jsonp 请求

    跨域请求

     

    注意:服务端返回形式是 当你客户端发起请求时,服务端以 res.write() 的形式返回给客户端的

    跨域请求 的 script 标签中 (以字符串的形式)

    客户端

     
    <!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>
    ​
    ​
    <script type="text/javascript">
        function showInfo(data) {
            console.log(data);
        }
    </script><script src="http://127.0.0.1:8000/getscript?callback=showInfo"></script></body>
    </html>

    服务端


    const http =require('http');
    const url = require('url');
    const querystring = require('querystring');
    ​
    http.createServer((req,res)=>{
    ​
      // const url = req.url;
      // var myURL = url.parse('https://user:pass@sub.host.com:8080/p/a/t/h?query=string#hash');
      // console.log(myURL);
      // var querystr = querystring.parse(myURL.query);
      // console.log(querystr);
    ​
       const getURL = url.parse(req.url,true);
    ​
       console.log(getURL);
    ​
      if(getURL.pathname === '/getscript') {
          
          var data = {
            name:'little'
          };  
          var scriptStr = `${getURL.query.callback}(${JSON.stringify(data)})`;
    ​
          res.end(scriptStr);
      }
      else {
        res.write("console.log('not found');");
        res.end();
      }
    ​
    }).listen(8000,()=>{
        console.log('localhost:8000');
    });
     

     

  • 相关阅读:
    启动或重启Oracle数据以及监听
    占坑 对自己的目标要求
    线程的使用经验(包括 Thread/Executor/Lock-free/阻塞/并发/锁等)
    接口的调用Client测试
    解决ftp登录问题:500 OOPS: cannot change directory:/home/xxx 500 OOPS: child died
    Tomcat7性能调优
    mysql性能调优
    四:JVM调优原理与常见异常处理方案
    redis的线程模型 与 压力测试
    为什么要用消息队列 及 自己如何设计一个mq架构
  • 原文地址:https://www.cnblogs.com/xixiaijunjun/p/10897020.html
Copyright © 2011-2022 走看看