zoukankan      html  css  js  c++  java
  • Angular 请求数据

    Angular 请求数据 get post 以及 jsonp 请求数据


     引入 HttpModule 、JsonpModule

    普通的 HTTP 调用并不需要用到 JsonpModule,不过稍后我们就会延演示对 JSONP 的支持,所以现在就加载它,免得再回来浪费时间。

    引入模块

    import { HttpClientJsonpModule, HttpClientModule } from '@angular/common/http';
    

      

     在 import 中注入模块

      imports: [
        BrowserModule,
        AppRoutingModule,
        FormsModule,
        HttpClientJsonpModule,
        HttpClientModule
      ],

      

     在使用文件引用

    import {HttpClient,JsonpClientBackend} from '@angular/common/http'
    

      

    在构造函数中声明

      constructor(private http:HttpClient,private jsonp:JsonpClientBackend) {
          
       }
    

      

    HTTP 请求GET数据

      /***请求数据 */
      requestData(){
        var url = "http://www.phonegap100.com/appapi.php?a=getPortalList&catid=20&page=1"
        
        this.http.get(url).subscribe(function(data){
          // 如果请求成功运行此代码
          console.log(data)
        },function(err){
          // 如果请求失败运行此代码
          console.log(err)
        })
      }

    返回的数据格式为 json 字符串。

    解析获取的数据

     ts 文件

    import { Component, OnInit } from '@angular/core';
    import { HttpClient, JsonpClientBackend } from '@angular/common/http'
    
    @Component({
      selector: 'app-mdata',
      templateUrl: './mdata.component.html',
      styleUrls: ['./mdata.component.css']
    })
    export class MdataComponent implements OnInit {
    
    
      public list: any;
    
      constructor(private http: HttpClient, private jsonp: JsonpClientBackend) {
    
      }
    
      ngOnInit() {
      }
    
      /***请求数据 */
      requestData() {
    
        var _that = this;
    
        var url = "http://www.phonegap100.com/appapi.php?a=getPortalList&catid=20&page=1"
    
        this.http.get(url).subscribe(function (data) {
          // 如果请求成功运行此代码
          // console.log(data)
          // 将json字符串转换为json对象 这个网址在请求的时候是对象,不必转换
          // console.log(JSON.parse(data))
          _that.list = data['result'];
          console.log(_that.list)
    
        }, function (err) {
          // 如果请求失败运行此代码
          console.log(err)
        })
      }
    
    }

      

    html 文件

    <h2>请求数据</h2>
    
    <button  (click)="requestData()">请求数据</button>
    
    <ul>
        <li *ngFor="let item of list" >
            {{item.title}}
        </li>
    </ul>

       

     

    HTTP 请求Post数据

    和GET请求一样,引入模块等一系列操作...

    引入 headers 模块

    private headers = new HttpHeaders({'Content-Type': 'application/json'});

      

    设置请求头

    private headers = new HttpHeaders({'Content-Type': 'application/json'});
    

      

    使用 POST 请求数据

       请求的后台是自己用node.js写的,代码如下:

     1 var express = require('express');
     2 
     3 var app=express();
     4 
     5 var bodyParser = require('body-parser');
     6 app.use(bodyParser.json());
     7 app.use(bodyParser.urlencoded({ extended: false }));
     8 
     9 
    10 //app.use(express.static(path.join(__dirname, 'public')));
    11 
    12 app.get('/',function(req,res){
    13 
    14     res.send('首页');
    15 
    16 
    17 
    18 })
    19 
    20 app.post('/dologin',function(req,res){
    21 
    22     console.log(req.body);
    23 
    24      res.json({"msg":'post成功'});
    25 
    26 
    27 
    28 })
    29 
    30 app.get('/news',function(req,res){
    31 
    32     //console.log(req.body);
    33 
    34     res.jsonp({"msg":'这是新闻数据'});
    35 
    36 })
    37 
    38 
    39 
    40 
    41 app.listen(3000,'127.0.0.1');
    后台代码

    ts 文件

    import { Component, OnInit } from '@angular/core';
    import { HttpClient, HttpHeaders } from '@angular/common/http'
    
    @Component({
      selector: 'app-mdata',
      templateUrl: './mdata.component.html',
      styleUrls: ['./mdata.component.css']
    })
    export class MdataComponent implements OnInit {
    
    
      public list: any;
    
      private headers = new HttpHeaders({'Content-Type': 'application/json'});
    
      constructor(private http: HttpClient) {
    
      }
    
      ngOnInit() {
      }
    
      /***请求数据 */
      requestData() {
    
        var _that = this;
        // HTTP 请求数据
        var url = "http://www.phonegap100.com/appapi.php?a=getPortalList&catid=20&page=1"
    
        this.http.get(url).subscribe(function (data) {
          // 如果请求成功运行此代码
          // console.log(data)
          // 将json字符串转换为json对象 这个网址在请求的时候是对象,不必转换
          // console.log(JSON.parse(data))
          _that.list = data['result'];
          console.log(_that.list)
    
        }, function (err) {
          // 如果请求失败运行此代码
          console.log(err)
        })
      }
    
      postData(){
        //  HTTP POST 请求
        var url="http://127.0.0.1:3000/dologin"
        this.http.post(url,
          JSON.stringify({"username":"zhangsan"}),
          {headers:this.headers}).subscribe(function(data){
          console.log(data)
        },function(err){
          console.log(err)
        })
        return false;
    
      }
    
    
    }

     

    html 文件

    <h2>请求数据</h2>
    
    <button  (click)="requestData()">请求get数据</button>
    <br><br>
    <button  (click)="postData()">请求post数据</button>
    
    <ul>
        <li *ngFor="let item of list" >
            {{item.title}}
        </li>
    </ul>

      

    Jsonp 请求数据

      因为太懒,懒得写了,之后有机会在写....

  • 相关阅读:
    学Maven,这篇万余字的教程,真的够用了!
    15 个优秀开源的 Spring Boot 学习项目,一网打尽!
    Spring Boot2 系列教程(三十)Spring Boot 整合 Ehcache
    800java面试题
    Nginx开发从入门到精通
    曹工说mini-dubbo(1)--为了实践动态代理,我写了个简单的rpc框架
    redis好书推荐
    一步一步学solr--windows下solr5.4.0环境搭建
    Redis
    8 个最好的 jQuery 树形 Tree 插件
  • 原文地址:https://www.cnblogs.com/wjw1014/p/10350260.html
Copyright © 2011-2022 走看看