2014-04-16 1 views
0

Работа с API Trakt.tv. Похоже, что я отправляю действительный json, поскольку я могу пройти аутентификацию, но возвращаемое мной сообщение является ошибкой разбора.

Resource interpreted as Script but transferred with MIME type text/html: 
http://api.trakt.tv/recommendations/shows/myApiKeyCompleteNumbers?callback=jQuery111000155555475132972_1397674204444&{%22username%22:%22userName%22,%22password%22:%22mySha1PassComplete%22}&_=1397674207093 

Uncaught SyntaxError: Unexpected identifier 

Возвращение говорит:

Disallowed Key Characters. 

Я использую: JQuery 1.11.0

Заранее спасибо за любую помощь или руководство

$(document).ready(function() { 

    function success(data) { 
     alert('data: ' + data); 
    } 

    var traktUser = 'myUserName'; 
    var traktHash = 'mySha1Password'; 
    var traktApi = 'myApiKey'; 
    var data = { 
     'username': traktUser, 
     'password': traktHash 
    }; 
    var postData = JSON.stringify(data); 
    var apiUrl = 'http://api.trakt.tv/recommendations/shows/' + traktApi; 

    $.ajax({ 
     type: 'POST', 
     url: apiUrl, 
     data: postData, 
     contentType: 'application/json', 
     dataType: 'jsonp', 
    }). 
    done(success); 

}); //document ready 

ответ

1

Вы можете» t сделать запрос POST с использованием JSONP, jQuery игнорирует инструкцию POST и делает запрос GET.

Ваши данные помещаются в строку запроса и неправильно кодируются URL.

Сервер отвечает HTML-документом, содержащим сообщение об ошибке вместо сценария JavaScript, отформатированного в соответствии с правилами JSONP.


Похоже, что API, который вы пытаетесь использовать, вообще не поддерживает JSONP. Поскольку вы передаете свои собственные учетные данные пользователя в запросе, это имеет смысл. JSONP - это взломать работу с той же политикой происхождения, которая реализована браузерами (в наши дни мы можем использовать CORS), и нет смысла использовать ее, если вы не хотите, чтобы браузеры конечных пользователей напрямую обращались к API. Поскольку браузеры конечных пользователей не могли получить к нему доступ, не указав свое имя пользователя и пароль, похоже, что это не похоже на то, что он будет использоваться таким образом.

Обработайте данные из API на своем сервере.

+0

Но как мне сделать запрос на перекрестный домен? Если я не использую jsonp, я получаю 401 несанкционированный @Quentin –

+0

. Вы спрашиваете у человека, предоставляющего API, какие механизмы у них есть для поддержки запросов на кросс-поиск. (Как уже упоминалось в ответе, похоже, что они не ожидают, что вы предоставите свои учетные данные своим пользователям, чтобы их браузеры могли напрямую отправлять запросы). – Quentin

+0

Спасибо. Это наводит меня на правильный путь @Quentin –

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