2013-10-03 5 views
44

Вот мой кодJSONP вызов, показывающий "неперехваченный SyntaxError: Неожиданный маркер:"

$.ajax({ 
     url: 'https://api.flightstats.com/flex/schedules/rest/v1/json/flight/AA/100/departing/2013/10/4?appId=19d57e69&appKey=e0ea60854c1205af43fd7b1203005d59&callback=?', 
     dataType: 'JSONP', 
     jsonpCallback: 'jsonCallback', 
     type : 'GET', 
     async: false, 
     crossDomain: true, 
     success: function(data) { 
      console.log(data); 
     } 
    }); 

Что я делаю неправильно? я должен добавить или изменить что-нибудь здесь? Любая помощь будет оценена по достоинству. Благодаря

+0

удалите пробел перед типа: 'GET', –

+2

Это JSON, не JSONP на свой адрес. – Johan

+0

'async: false' не работает с JSONP. Почему вы используете 'jsonpCallback' И' callback =? '' CrossDomain' не требуется для междоменных запросов (иронично, не так ли?) –

ответ

51

Рабочих скрипки:

http://jsfiddle.net/repjt/

$.ajax({ 
    url: 'https://api.flightstats.com/flex/schedules/rest/v1/jsonp/flight/AA/100/departing/2013/10/4?appId=19d57e69&appKey=e0ea60854c1205af43fd7b1203005d59', 
    dataType: 'JSONP', 
    jsonpCallback: 'callback', 
    type: 'GET', 
    success: function (data) { 
     console.log(data); 
    } 
}); 

мне пришлось вручную установить обратный вызов callback, так как это все удаленный сервис, кажется, поддерживает. Я также изменил URL-адрес, чтобы указать, что я хотел jsonp.

+415

Мне очень показательно, что ваше имя пользователя - «Джейсон П». :) – JaredCubilla

+13

Просто, чтобы быть ясным, это просто прекрасное совпадение *;) Но эй, [что я знаю] (https://www.youtube.com/watch?v=Jne9t8sHpUc). – dbro

+2

вам нужно определить функцию с именем 'callback' где-нибудь? –

18

Вы пытаетесь получить доступ к JSON, а не JSONP.

Обратите внимание на разницу между источником:

https://api.flightstats.com/flex/schedules/rest/v1/json/flight/AA/100/departing/2013/10/4?appId=19d57e69&appKey=e0ea60854c1205af43fd7b1203005d59&callback=?

И фактическая JSONP (функция обертывание):

http://api.flickr.com/services/feeds/photos_public.gne?jsoncallback=processJSON&tags=monkey&tagmode=any&format=json

Поиск JSON + CORS/кросс-доменной политики и вы найдете сотни SO нитей на этой самой теме.

+0

Все, что мне нужно сделать, это указать JSONP в URL-адресе, как предполагалось, JSON, как показано в настоящее время в URL-адресе. К счастью, третья сторона поддерживает JSONP на основе ссылки –

-2

я запускаю этот

var data = '{"rut" : "' + $('#cb_rut').val() + '" , "email" : "' + $('#email').val() + '" }'; 
var data = JSON.parse(data); 

$.ajax({ 
    type: 'GET', 
    url: 'linkserverApi', 
    success: function(success) { 
     console.log('Success!'); 
     console.log(success); 
    }, 
    error: function() { 
     console.log('Uh Oh!'); 
    }, 
    jsonp: 'jsonp' 

}); 

и редактировать заголовок в ответе

'Access-Control-Allow-Methods' , 'GET, POST, PUT, DELETE'

'Access-Control-Max-Age' , '3628800'

'Access-Control-Allow-Origin', 'websiteresponseUrl'

'Content-Type', 'text/javascript; charset=utf8'

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