【问题标题】:handling a jsonp callback in an ember component在 ember 组件中处理 jsonp 回调
【发布时间】:2015-12-13 07:59:34
【问题描述】:

我有一个通过地理服务器检索要素信息的 jsonp 请求,调用如下所示:

import Ember from 'ember';

export default Ember.Component.extend({

  _selectParcel: function() {

    function handleJson(data){
      console.log(data);
    }

    $.ajax('url/geoserver/wms', {
      type: 'GET',
      data: {
      service: 'WFS',
      version: '1.1.0',
      request: 'GetFeature',
      typeName: 'name_here',
      maxFeatures: 10000,
      outputFormat: 'text/javascript',
      srsname: 'EPSG:4326',
      bbox: '-73.68229866027832, 40.97056664236637, -73.68229866027832, 40.97056664236637, EPSG:4326'
    },
      dataType: 'jsonp',
      jsonpCallback: 'callback:handleJson',
      jsonp: 'format_options'
    });

  }
});

我遇到的问题是处理回调范围 - 在这种情况下,handleJson()

我也试过

.then(function(){});

在 ajax 调用之后但没有运气。

_selectParcel 将根据鼠标移动频繁调用。

在 Ember 组件中应该如何处理 jsonp 回调?

我已经看到了这个using ember data with jsonp,但我不确定如何与组件中的适配器进行交互。

控制台错误看起来像:“未捕获的 ReferenceError:handleJson 未定义”上面写的方式 - 使用 callback=? 时“未捕获的 ReferenceError:parseResponse 未定义”和“.then(function(){})”承诺

【问题讨论】:

  • 控制台有错误吗?
  • 是的,它的“Uncaught ReferenceError:handleJson is not defined”就像上面写的那样 - 以及使用 callback=? 时的“Uncaught ReferenceError:parseResponse is not defined”和“.then(function(){})”承诺

标签: ember.js callback ember-data jsonp jquery-callback


【解决方案1】:

尝试更改此行:

  jsonpCallback: 'callback:handleJson'

  jsonpCallback: 'handleJson'

【讨论】:

  • 你是对的! jsonpCallback 必须更改,我还必须更改 format_options 键以匹配。谢谢=)
【解决方案2】:

好的,这里确实有 2 件。

  1. 应该 ember 组件请求数据
  2. geoserver jsonp 请求是如何处理的

对于第一个我发现这篇文章很有帮助Should Components Load Data

对于第二个,format_options 和 jsonpCallback 键匹配的这一位起到了作用。谢谢this link

$.ajax('url/geoserver/wms', {
    type: 'GET',
    data: {
      service: 'WFS',
      version: '1.1.0',
      request: 'GetFeature',
      typeName: 'name_here',
      maxFeatures: 10000,
      outputFormat: 'text/javascript',
      srsname: 'EPSG:4326',
      bbox: '-73.68229866027832, 40.97056664236637, -73.68229866027832, 40.97056664236637, EPSG:4326',
      format_options: 'callback:getJson'
    },
    dataType: 'jsonp',
    jsonpCallback: 'getJson'
  }).then(function(data) {
    console.log(data);
  });

【讨论】:

    猜你喜欢
    • 2014-06-14
    • 2014-01-27
    • 1970-01-01
    • 2011-07-19
    • 2012-06-05
    • 1970-01-01
    • 2019-11-17
    • 2019-02-25
    • 1970-01-01
    相关资源
    最近更新 更多