2013-12-18 6 views
1

Я использую ниже код для доступа к службе отдыха, размещенной в другом домене.SyntaxError: missing; перед оператором jquery jsonp

$.ajax({ 
      type: 'GET', 
      url: url, 
      async: false, 
      jsonpCallback: 'jsonCallback', 
      contentType: "application/json", 
      dataType:"jsonp", 
      success: function(json) { 
       alert(json); 
      }, 
      error: function(e) { 
       console.log(e.message); 
      } 
     }); 

Я могу правильно получить данные, но я получаю эту ошибку в поджигатель в Mozilla:

SyntaxError: missing ; before statement

{"Hello":"World"}

Может кто-нибудь предложить мне то, что я здесь делаю неправильно? Несмотря на то, что данные Json действительны. Я пробовал все предложения, размещенные в этом question Но все же я получаю такую ​​же ошибку.

+3

ответ не правильный ответ JSONP .... это должно быть что-то вроде ' jsonpCallbackName ({«Hello»: «World»}) ' –

+0

@ArunPJohny У меня нет контроля над ответом, он размещен сторонним разработчиком. Я могу только использовать его :( –

+0

Почему вы задаете 'jsonpCallback' и также функцию успеха, которая получает ваш json? –

ответ

3

Если это действительно JSON вы просите, не устанавливайте "jsonp" как dataType, и не обеспечивают функцию обратного вызова:

$.ajax({ 
     type: 'GET', 
     url: url, 
     contentType: "application/json", 
     success: function(json) { 
      alert(json); 
     }, 
     error: function(e) { 
      console.log(e.message); 
     } 
}); 
+0

afaik, 'contentType' - это только когда вы отправляете на сервер, а не извлекаете данные из него. – Andy

+0

@ Andy Да. contentType is f или отправки. Тип данных предназначен для ожидания от сервера. –

+0

Я пробовал, даже я получаю такую ​​же ошибку. –

0

формат JSON и JSONP являются slightæy разные JKSONP является вызов функции выражение

callback({"hellow":"world"}); 

, тогда как JSON является просто сериализованный объект

{"Hello":"world"} 

fromyour размещения его, казалось бы, что сервер возвращает JSON и не JSONP

Так что вам необходимо либо изменить сервер, чтобы правильно ответить (Фактическое имя обратного вызова параметр прибудете запроса). Вы должны это сделать, если вы используете вызов AJAX между доменами

Если вы не используете Ajax через домены придерживаться регулярного JSON

+0

Но я использую кросс-доменные запросы ajax. –

+0

@ RanveerSinghRajpurohit, в этом случае вам нужен сервер для доставки действительного JSONP вместо JSON –

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