2014-09-29 4 views
3

Прежде чем я объясню свою проблему, я хотел бы упомянуть, что я наивный на jsonp. Это на самом деле моя первая попытка работать с JSONP.JSONP - «Uncaught SyntaxError: Неожиданный токен»

Im using jquery ajax call to pullback данные с веб-сайта.

мой JQuery код ниже

$.fn.checkTPS = function(){ 

    return this.each(function(){ 
     var interval; 

     $(this).on('keyup', function() { 
      var api_key = 'asdfasfsadfsadfsad'; 
      var format = 'json'; 
      var username = '[email protected]'; 

      var self = $(this); 
      var selfValue; 
      var feedback = $('.tps-feedback'); 

      if(interval === undefined){ 

       interval = setInterval(function(){ 

        if(selfValue !== self.val()) { 

         selfValue = self.val(); 

         if (selfValue.length > 9){ 
          $.ajax({ 
           url: 'https://www.selectabase.co.uk/api/v1/tps/' + selfValue + '/', 
           type: 'get', 
           dataType: 'jsonp', 
           data: { 
            format: format, 
            username: username, 
            api_key: api_key 
           }, 
           success: function(data) { 
            console.log(data); 
           }, 
           error: function() { 

           }, 
           jsonp: 'jsonp' 
          }); 
         } 
        } 
       },3000); 
      } 
     }); 
    }); 
}; 

Я хочу, чтобы приспособить обслуживание от selectabase.co.uk, по их мнению, это, как я должен использовать сервис https://www.selectabase.co.uk/api/v1/tps/[number]/?format=json&username=[username]&api_key=[api key]

когда я отправить запрос с помощью Ajax, я получаю это ошибка Uncaught SyntaxError: Unexpected token : и при нажатии на это открывает {"ctps": false, "number": "1452500705", "resource_uri": "/api/v1/tps/01452500705/", "tps": false}, кстати это я хочу, но не знаю, что эта ошибка unexpected token :

Я скопировал ссылку из инспектировать вкладку элемента (вы можете увидеть изображение ниже) Я думаю, что это вызов, который был сгенерирован с помощью JSON https://www.selectabase.co.uk/api/v1/tps/01452500705/?jsonp=jQuery17102731868715648129_14120077325500&format=json&username=dame40example.co.uk&api_key=asdfasfsadfsadfsad&_=14120077325500

Я скопировал ссылку с inspect element > source tab в хроме .. Я думаю, что я должен добавить изображение, чтобы правильно описать, где эти json-данные и ссылка, с которой я скопировал.

enter image description here

Я надеюсь, что я смог передать свое сообщение через ... пожалуйста, помогите, если у вас есть какие-либо идеи, что мне нужно сделать, чтобы добавить ... Привет

+4

Сервер отправляет JSON, а не JSONP. Это проблема. –

+0

http://stackoverflow.com/questions/17406990/the-uncaught-syntaxerror-unexpected-token-in-jsonp, http://stackoverflow.com/a/19166256/2864740 – user2864740

+0

, но если я использую 'dataType: ' json'' browser dosent отправить запрос на этот URL-адрес – Sharif

ответ

6

format=json в строке запроса вероятно, должно быть format=jsonp. Сервер отвечает JSON, но вы ожидаете ответа JSONP. Но я не знаю, что они поддерживают format=jsonp, это просто догадка.

С другой стороны, если , что сервер поддерживает CORS и позволяет запросы от вашего происхождения, вы могли бы обрабатывать JSON вместо (просто удалить dataType: "json" из вашего ajax вызова). Помните, что для этого потребуется, чтобы пользователь использовал браузер, который properly supports CORS, который IE8 и IE9 этого не делают. (Они поддерживают CORS, но не через обычный объект XMLHttpRequest, и это несовместимость браузера, что jQuery не не сглаживает вас. Если вы ищете, вы можете найти «плагины» или подобные им.)

+0

Этот формат не имеет ничего общего с ajax jsonp, это то, как они хотят отправлять данные '? Format = json & username = [username] & api_key = [api key]' – Sharif

+0

Я тоже пробовал с jsonp, но по-прежнему ту же ошибку – Sharif

+0

@Sharif : Обычно, если такая служба имеет параметр строки запроса 'format', они поддерживают несколько форматов (JSON, XML и JSONP - все популярны). Это может быть или не быть, но опять же, поскольку они, похоже, поддерживают CORS, вы можете использовать JSON, если это все, что они предлагают. –