【问题标题】:How can I convert this Ajax query to http client request in Angular 8?如何将此 Ajax 查询转换为 Angular 8 中的 http 客户端请求?
【发布时间】:2020-06-25 04:51:11
【问题描述】:

我有一个ajax请求,像这样:

  var data = {
    REQUEST: 'GetFeatureInfo',
    SERVICE: 'WMS',
    VERSION: '1.1.1',
    LAYERS: layerName,
    STYLES: '',
    FORMAT: 'image/png',
    INFO_FORMAT:'application/json',
    BGCOLOR: '0xFFFFFF',
    TRANSPARENT: 'TRUE',
    SRS: 'EPSG:' + mapSRID,
    BBOX: xmin + "," + ymin + "," + xmax + "," + ymax,
    WIDTH: map.width,
    HEIGHT: map.height,
    QUERY_LAYERS: layerName,
    X: screenPoint.x.toFixed(0),
    Y: screenPoint.y.toFixed(0)
  };
  $.ajax({
    type: 'GET',
    url: url,
    data: data,
    dataType: "application/json",
    complete: function (data) {
      callBack(data);
    }
  });
}

我想通过使用 http 客户端 get 方法转换为 angular。我该怎么做。

我的解决方案但回复:ok: false

  getInfo() {
    const params = {
      SERVICE: 'WMS',
      VERSION: '1.1.1',
      ...
    };

    this.http.get<any>('http://localhost:8080/geoserver/topp/wms', params).subscribe(data => {
      console.log(data);
    });
  }

回应: 状态:200 状态文本:“确定” 网址:“http://localhost:8080/geoserver/topp/wms?SERVICE=WMS&VERSION=1.1.1&EQUEST=GetFeatureInfo&FORMAT=image/png&TRANSPARENT=true&QUERY_LAYERS=topp:states&LAYERS=topp:states&exceptions=application/vnd.ogc.se_inimage&INFO_FORMAT=text/html&FEATURE_COUNT=50&X=50&Y=50&SRS=EPSG:4326&STYLES=&WIDTH=101&HEIGHT=101&BBOX=-113.8623046875,42.4072265625,-104.9853515625,51.2841796875” 好的:错误

为了更清楚,我想在 Angular 8 中将 URL 获取请求转换为 http 客户端获取方法请求:

http://localhost:8080/geoserver/wms?service=wms&version=1.1.1&request=GetCapabilities

【问题讨论】:

  • 到目前为止你尝试过什么?在 Angular 中发出 http 请求非常有据可查。您在哪个具体部分苦苦挣扎?
  • 我试过了,但是当我使用 Postman 时它工作得很好,但是当我使用 get 方法时,状态返回是 200 并且 ok 是 false。
  • 什么你试过了吗?
  • 这听起来与您的问题非常相关
  • const params = { 'key':'value' }; this.http.get('localhost:8080/geoserver/topp/wms', params).subscribe(data => { console.log(data); });

标签: ajax angular httpclient angular8


【解决方案1】:

在您的数据中,您有 EQUEST 而不是 REQUEST

【讨论】:

    【解决方案2】:

    在您的服务中注入 HttpClient。

    this.http.post(url , data).subscribe(response => {
     console.log(response);
    }) //post request if you have to send data
    
    this.http.get(url).subscribe(response => {
     console.log(response);
    })//get if you want data
    

    Ajax 在内部将您随请求发送的数据附加到 url 字符串。所以为了使用 Angular 来做到这一点,你需要使用 HttpParams

    let params = new HttpParams().set("paramName",paramValue).set("paramName2", paramValue2); //Create new HttpParams
    
    this.http.get(url, {headers: headers, params: params});
    

    【讨论】:

    • 他想用 GET 请求发送正文
    • 语法错误:src/app/services/query-geoserver.service.ts(38,68) 中的错误:错误 TS2559:类型 '{ SERVICE: string;版本:字符串;马术:
    • 获取请求没有正文
    • 如果要发送数据,只需使用 POST 代替
    • 不,这是必需的
    猜你喜欢
    • 2020-10-30
    • 2018-10-30
    • 1970-01-01
    • 2019-09-27
    • 1970-01-01
    • 2016-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多