http.get 被调用两次

2023-12-15

我有这个 http.get 请求,但它被触发了两次。它在我的构造函数内。

import { Component } from '@angular/core';
import { NavController, LoadingController } from 'ionic-angular';
import { Auth, User, IDetailedError } from '@ionic/cloud-angular';
import { Http, URLSearchParams, Headers } from "@angular/http"
import 'rxjs/add/operator/map';
import 'rxjs/add/operator/share';

import { DetailsPage } from '../details/details';
import { LoginPage } from '../login/login';

@Component({
  selector: 'page-dashboard',
  templateUrl: 'dashboard.html'
})
export class Dashboard {

  visitors: any;
  currentSite: any;
  searchDate: String = new Date().toISOString();

  constructor(public navCtrl: NavController, public http: Http, public loadingCtrl: LoadingController, public user: User, public auth: Auth) {

    if (this.auth.isAuthenticated()) {

        this.currentSite = this.user.get('siteName',0);

        let loading = this.loadingCtrl.create({
          spinner: 'bubbles',
          content: 'Fetching visitors ...',
          duration: 5000
        });

        loading.present();  

        var headers = new Headers();
        headers.append('Content-Type', 'application/x-www-form-urlencoded');  
        headers.append('Authorization', 'Basic '+ btoa(this.user.get('siteID',0)+':'+this.user.get('token',0)));      

        this.http.get('http://api.domain.com/visitors?search_from='+this.searchDate+'&search_to='+this.searchDate, {headers:headers}).map(res => res.json()).share().subscribe(data => {
            this.visitors = data.res;
            loading.dismiss();
        });   

    } else {
        this.navCtrl.setRoot(LoginPage);
    }

  }

基于Angular2 http.post 被执行两次看起来我需要包含 share() 但当我尝试这样做时出现错误..

如果我将 share() 放在最后,则会得到“订阅类型上不存在属性”,如果我将其放在订阅之前,则会得到“可观察类型上不存在属性共享”

有人可以告诉我 share() 应该去哪里......或者我是否真的有不同的问题?


您提到了 OPTIONS 请求。您是否从与 API 不同的服务器运行 Angular 2 站点?

如果是这样,那么您将不得不处理 CORS - 即浏览器将发送第一个 OPTIONS 请求并检查响应的标头以查看是否允许 CORS。

这可以解释为什么您在后端 API 上看到两个请求

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

http.get 被调用两次 的相关文章

随机推荐

  • 编写 JUnit 测试

    拜托 我是Java新手 如何为以下程序编写 JUnit 测试 要测试的程序 package codekeeper author henryjoseph import java util import java io public class
  • Conda 仅为 env 设置 LD_LIBRARY_PATH [重复]

    这个问题在这里已经有答案了 我安装了 miniconda3 其中创建了一个名为 py35 的虚拟环境 我有一些只想在这个环境中使用的库 因此他们处于 miniconda3 envs py35 libs 但是 由于 LD LIBRARY PA
  • Java JsonObject 数组值到键

    我是java新手 所以这有点令人困惑 我想获取json格式的字符串 我想要的结果是 user name lamis 我目前正在做的是这样的 JSONObject json new JSONObject json put name Lamis
  • .net 位图改变图像的颜色

    我正在尝试调整图像大小而不丢失任何颜色 但我无法让它发挥作用 看下图 上一张是原图 下一张是经过 NET的 我的问题是 如何保留颜色 我尝试了很多不同的设置 寻找 GDI 错误 更改调色板 将 ImageAttributes 更改为人们在互
  • 聚合与组合

    我想知道之间的关系是Human and a Driver License聚合还是组合 我很清楚Room and a Building关系是一个组合和一个Chair and a Room是一个聚合 但一个Driver License可以在没有
  • Visual Studio 2022 - v.17.6.5 - 在 _Layout.cshtml 中链接安装的 nuget 包 css 文件

    我创建了一个新的 net 6 0 MVC Web project并删除了预装的bootstrap from wwwroot lib因为我想添加它NuGet Package Manager 安装软件包后 文件将显示在我的中作为参考wwwroo
  • 在多个控制器操作中保留值

    在我的控制器中 我有一个数据库中对象的 ID 并且多个操作需要此 ID 来访问该对象 该 ID 是在Index操作并用于填充视图模型 我获取 ID 的方式是通过一个参数 EPiServer CMS 外 将Index行动 所以我无法在其他地方
  • 获取文件夹中的所有音频文件

    如何使用 ManagedQuery 从 Android 中的特定文件夹中获取所有音频文件 表示 ManagedQuery 中的 where 子句应该是什么来过滤 Cursor 结果 Code is String proj MediaStor
  • 使用 PHPmailer 发送多封电子邮件

    编辑 我忘记了我创建了SendMail 函数我自己 这就是为什么解释一开始没有提到它的作用 我在使用 PHPMailer 时遇到了一些问题 https github com PHPMailer PHPMailer 当尝试发送两封电子邮件时
  • 使用 Ruby 在多个操作系统中读取文件名而不会出现编码问题

    我想获取 UTF 8 格式的所有文件名 例如 当我在 Windows 中读取文件名后 我会 filename Iconv iconv UTF 8 Windows 1251 filename 在 Ubuntu 中 我不转换文件名并以 UTF
  • 如何制作类似于 Dropbox 的登录按钮?

    我正在尝试做类似 Dropbox 的登录按钮 有一个线程jQuery 中的 dropbox 登录弹出方法 但我对此无能为力 我希望当我按下登录按钮时将其打开 与 dropbox com 相同 这是示例代码 现在它可以在悬停时运行 但我想要点
  • ASP.NET 自定义控件

    如何创建自定义控件 不是 ASCX 控件 更重要的是 如何在项目中使用它 我不想为它创建一个单独的项目或将其编译为 DLL 服务器控件应编译成 DLL 没有理由害怕在项目中添加额外的程序集 它有助于创建良好的项目组织 ASP NET 服务器
  • jsf2.0 - 如何获取请求范围内其他 jsf 页面 bean 中的值

    我有两个页面 myaccount xhtml 和 selectbank xhtml 在我的帐户页面中 有一个充值帐户选项 当用户按下提交按钮时 用户将在其中输入金额 然后它将使用以下 bean 方法转到选择银行页面 public Strin
  • 更改 mat-list-option 中的文本颜色

    我在用mat selection list组件其中mat list option正在显示一个contact list如下所示 Now the background color当我点击特定时正在改变contact name 例如格雷姆天鹅 和
  • 如何获取 Rplotly 的旭日图中点击切片的 event_data

    当使用plotly R包在Shiny应用程序中创建旭日饼图时 用户可以单击图来动态放大 缩小 我们希望能够下载当前选定 居中片段的一些数据 但是 我们无法从所有可能的 eventdata 选项中找到此信息 有悬停事件 但这还不够 因为用户可
  • Nokogiri 解析 ajax 加载的内容

    nokogiri 是否可以解析通过 ajax 加载的内容 如果不是 我将如何实现这一目标 Nokogiri 无法看到 AJAX 内容 因为它不是 Javascript 解析器 因此无法解释它并执行所需的请求 您想要的是 Watir 或其衍生
  • Bootstrap typeahead 绑定值与淘汰赛 js 不起作用

    我有一个使用淘汰赛创建的 ViewModel 其中包含我的产品的所有信息 它看起来像这样 var ProductViewModelDS function data var self this self ProductSKUID ko obs
  • 根据java中的字母将按字母顺序排序的列表拆分为子列表

    我在java中有一个排序列表 我只想根据列表每个索引的第一个字母将该列表拆分为子列表 例如 列表包含 calculator catch doll elephant 我想要子列表为 calculator catch doll elephant
  • Grails 3 自动重新连接 MS Sql Server

    我正在 Grails 3 2 2 上开发一个 Web 应用程序 使用 spring boot 和 hibernate 以及 MS SQL Server 作为后端数据库 我希望每当 SQL Server 在重新启动或出现任何其他问题后恢复时
  • http.get 被调用两次

    我有这个 http get 请求 但它被触发了两次 它在我的构造函数内 import Component from angular core import NavController LoadingController from ionic