【问题标题】:Angular 5: callbackParam doesn't work in JSONP request using HTTPClientAngular 5:callbackParam 在使用 HTTPClient 的 JSONP 请求中不起作用
【发布时间】:2018-10-06 19:34:40
【问题描述】:

我认为 HTTPClient jsonp 方法的第二个参数没有按预期工作,或者我可能没有正确理解它。 Link

以下是我使用jsonp所做的事情:

我在 app.module.ts 中导入了 HttpClientJsonpModule 下面是它的代码

import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { HttpClientModule, HttpClientJsonpModule } from '@angular/common/http';
import { AppComponent } from './app.component';
import { ConstituencyStatusService } from './constituency-status.service';
import { SwitcherService } from './switcher.service'


@NgModule({
  declarations: [
    AppComponent
  ],
  imports: [
   BrowserModule,
   HttpClientModule,
   HttpClientJsonpModule
  ],
  providers: [ConstituencyStatusService,SwitcherService,],
  bootstrap: [AppComponent]
})
export class AppModule { }

然后我尝试执行以下操作但收到错误

this.http.jsonp(url,'test_callback').subscribe(data => {
  console.log(data);
});

错误是 ReferenceError: test_callback is not defined

我的 JSON 输出是 URL:goo.gl/6fqXq5

test_callback({ "test_url_1": "url_1", "test_url_2": "url_2", "test_url_3": "url_3", "test_url_4": "url_4", "test_url_5": "url_5", "test_url_6": "url_6", "test_url_7": "url_7" })

我在网络选项卡中看到 httpclient 在 url 之后添加 ?test_callback=ng_jsonp_callback_0

然后经过一些调试,我尝试了这个 json 返回:goo.gl/cUwx93

ng_jsonp_callback_0({ "test_url_1": "url_1", "test_url_2": "url_2", "test_url_3": "url_3", "test_url_4": "url_4", "test_url_5": "url_5", "test_url_6": "url_6", "test_url_7": "url_7" })

它奏效了。

有人可以解释为什么它现在可以工作,以及如何将我的自定义回调函数名称传递给 Angular 5 中的 jsonp。

【问题讨论】:

    标签: angular httpclient jsonp angular5


    【解决方案1】:

    请您显示您传递给jsonp()url 吗?

    作为noticed here(kcrisman 评论),看来您不是唯一遇到此类问题的人。

    如果您在请求中将回调名称指定为 queryParam,它会破坏事情。不指定它,只将回调名称添加到 jsonp() 方法似乎有效。

    您还可以通过JSONP_CALLBACK 查看line N°1124 of HttpClient 的行为。

    【讨论】:

    • 带有我的回调名称的 URL:goo.gl/6fqXq5 带有 ng_jsonp_callback_0 名称的 URL:goo.gl/cUwx93
    • 我尝试了jsonp() 没有queryParam 并且还仅在jsonp() 中指定了名称。还是一样的错误。
    • 该死的。您能否在stackblitz 中重现您的问题?它通常会有所帮助。
    • @Pankaj - 你找到解决方案了吗?
    猜你喜欢
    • 1970-01-01
    • 2018-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-18
    • 1970-01-01
    • 1970-01-01
    • 2018-07-09
    相关资源
    最近更新 更多