处理ember组件中的jsonp回调

时间:2015-09-16 16:02:57

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

我有一个jsonp请求通过geoserver检索功能信息,调用看起来像这样:

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"上面写的方式 - " Uncaught ReferenceError:parseResponse没有定义"什么时候使用callback =?和" .then(function(){})"许

2 个答案:

答案 0 :(得分:1)

好的,所以这里真的有2件。

  1. 应该包含组件请求数据
  2. 如何处理geoserver jsonp请求
  3. 对于第一个,我发现这个写有用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);
      });
    

答案 1 :(得分:0)

尝试更改此行:

  jsonpCallback: 'callback:handleJson'

  jsonpCallback: 'handleJson'