обработка обратного вызова jsonp в компоненте ember

У меня есть запрос 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 будет часто вызываться в зависимости от движения мыши.

Как следует обрабатывать обратный вызов jsonp в компоненте Ember?

Я видел это с использованием данных ember с jsonp но я не уверен, как взаимодействовать с адаптером из компонента.

Ошибки консоли выглядят так: «Uncaught ReferenceError: handleJson не определен» так, как написано выше, и «Uncaught ReferenceError: parseResponse не определен» при использовании callback=? и обещание ".then(function(){})"


person cswright    schedule 16.09.2015    source источник
comment
Ошибки в консоли?   -  person Daniel Kmak    schedule 16.09.2015
comment
да, его Uncaught ReferenceError: handleJson не определен так, как написано выше, и Uncaught ReferenceError: parseResponse не определен при использовании callback=? и обещание .then(function(){})   -  person cswright    schedule 16.09.2015


Ответы (2)


Итак, здесь действительно 2 части.

  1. должны ли встроенные компоненты запрашивать данные
  2. как обрабатываются запросы геосервера jsonp

Для первого я нашел эту запись полезной Должны ли компоненты загружать данные

Во-вторых, этот бит, где совпадают ключи format_options и jsonpCallback, сделал свое дело. Спасибо за эту ссылку< /а>

$.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);
  });
person cswright    schedule 16.09.2015

Попробуйте изменить эту строку:

  jsonpCallback: 'callback:handleJson'

to

  jsonpCallback: 'handleJson'
person Tyler Iguchi    schedule 16.09.2015
comment
Ты прав! Необходимо было изменить jsonpCallback, и мне также пришлось изменить ключ format_options, чтобы он соответствовал. Спасибо =) - person cswright; 16.09.2015