2015-01-05 7 views
2

У меня есть простое поле ввода, которое возвращает результаты, когда вы их ищете, используя Trakt API. Недавно они изменили свой API, и теперь мой код больше не работает (он использовал). Я получаю этот вопрос:Проблема с обратным вызовом API JSON

Refused to execute script from http://.... because its MIME type ('application/json') is not executable, and strict MIME type checking is enabled.

КОД:

$.ajax ({ 
    type: "GET", 
    // **OBSOLETE** url: 'http://api.trakt.tv/search/shows.json/78c0761c9409a61cf88e675687d6f790/'+ value +'/5/seasons/', 
    url: 'http://api.trakt.tv/search/shows.json/78c0761c9409a61cf88e675687d6f790?query=' + value + '&limit=5&seasons=true', 
    dataType: "jsonp", 
    json: "callbackname", 
    crossDomain : true, 

Если удалить:

dataType: "jsonp", 

или изменения:

dataType: "json", 

Я получаю различная ошибка:

XMLHttpRequest cannot load http://.... No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'https://dl.dropboxusercontent.com' is therefore not allowed access.

Демо:http://dl.dropboxusercontent.com/u/48552248/websites/tiii.me/index.html («нагрузка небезопасным сценарий», если https: // принудительно)

Ссылка на код:https://dl.dropboxusercontent.com/u/48552248/websites/tiii.me/scripts/partials/_tv-show.js

Любые идеи? Благодаря!

+1

только потому, что API служит JSON, это не значит, что CORS включен или что он будет обслуживать jsonp. Прочтите документы API, и если ни один из подходов не доступен, используйте прокси-сервер. – charlietfl

+0

попробуйте правильно настроить параметры. прочитайте ajax docs – charlietfl

+0

, вы даже можете создать свой собственный прокси с php и вернуть json или jsonp в свое удобство – JFK

ответ

1

попробовать это один

function getJSONP(url, success) { 

    var ud = '_' + +new Date, 
     script = document.createElement('script'), 
     head = document.getElementsByTagName('head')[0] 
       || document.documentElement; 

    window[ud] = function(data) { 
     head.removeChild(script); 
     success && success(data); 
    }; 

    script.src = url.replace('callback=?', 'callback=' + ud); 
    head.appendChild(script); 

} 
-2

Похоже, ответ вы получаете не ответ JSONP но ответ JSON. В jsonp вы должны получить обратный вызов метода javascript. Если в вашем случае его простые данные json. поэтому вам нужно обработать данные json и вручную вызвать метод callbackname и передать объект, который вы возвращаете как результат json.

+0

Если я перехожу на 'json', я получаю' XMLHttpRequest не могу загрузить http: // .... No 'Access- Заголовок Control-Allow-Origin присутствует на запрошенном ресурсе. Происхождение https://dl.dropboxusercontent.com 'поэтому не допускается. – Alex

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