2016-03-09 4 views
0

Для моей стажировки мне предлагается разработать мобильное приложение на основе этого веб-сайта (www.claroline.net). Технология, которую я должен использовать, это Nativescript в сочетании с Angular 2. Мне удалось реализовать функцию входа в систему, чтобы пользователи веб-сайта теперь могли войти в приложение.JSONP call => ReferenceError: документ не определен

Затем я должен иметь возможность получать уведомления о веб-сайте в приложении. Вначале я просто хочу отображать уведомления в массиве JSON. У меня уже есть url для получения массива JSON (запрос получения работает в браузере), но когда я делаю это из мобильного приложения, я получаю ошибку 500.

Я слышал тогда о JSONP, который мог бы помочь мне решить мою проблему. Видимо, есть несколько вещей, чтобы сделать: - импорт JSONP_PROVIDERS в корневом компоненте и самонастройки его - импорт JSONP в компоненте вы хотите сделать вызов JSONP - добавить параметр обратного вызова в URL

я упускаю что-нибудь ? Потому что, несмотря на то, что я сделал все это, я получаю сообщение об ошибке в консоли: «ReferenceError: document not defined» в некотором Javascript-файле, который является странным, потому что, поскольку я кодирую в TypScript, нет переменных, называемых документами.

+0

Статус 500 означает, что существует проблема с сервером (или некорректного запроса). JSONP здесь не поможет. – dfsq

ответ

3

Здесь можно использовать поддержку JSONP в Angular2.

После регистрации JSONP_PROVIDERS при вызове bootstrap функции:

import {bootstrap} from 'angular2/platform/browser' 
import {JSONP_PROVIDERS} from 'angular2/http' 
import {AppComponent} from './app.component' 

bootstrap(AppComponent, [ JSONP_PROVIDERS ]); 

Вы можете выполнить запрос с помощью экземпляра Jsonp класса вы впрыскиваемого из конструктора:

import {Component} from 'angular2/core'; 
import {Jsonp} from 'angular2/http'; 

@Component({ 
    selector: 'my-app', 
    template: ` 
    <div> 
     Result: {{result | json}} 
    </div> 
    ` 
}) 
export class AppComponent { 
    constructor(jsonp:Jsonp) { 
    var url = 'https://...&c=JSONP_CALLBACK'; 
    jsonp.request(url, { method: 'Get' }) 
    .subscribe((res) => { 
     this.result = res.json() 
    }); 
    } 
} 

В вашем случае, параметр c может иметь другое имя, но вам нужно установить значение JSONP_CALLBACK.

Смотрите эту plunkr: http://plnkr.co/edit/dqreqBL6kyNkR8Z2wgGR?p=preview

+0

Как узнать имя параметра c в моем случае? –

+0

Вам необходимо проверить документацию API, которую вы пытаетесь использовать ... –

+0

Какой вызов вы пытаетесь сделать? –

Смежные вопросы