2013-08-05 3 views
2

Я пытаюсь получить данные JSon от службы, но получаю parseError, когда я использую $ .ajax с типом данных «JSONP»:JSON parseError - получить JSON в виде строки

$.ajax({ 
    url: url, 
    dataType: 'JSONP' 
}) 
.error(function(XMLHttpRequest, textStatus, errorThrown) { ... }) 
.done(function(data) { ... }); 

Если я попробовать его с другими datatype, чем «JSONP», он возвращает ошибку 404.

Как я могу получить только строку вместо синтаксического анализа json, я считаю, что в json есть некоторые разрывы строк, которые вызывают ошибки синтаксического анализа.

Вот скрипка http://jsfiddle.net/FSEZQ/3/

+0

@ x4rf41 Я пробовал ... получение ошибки 404 - пожалуйста, проверьте скрипт – Felix

+0

- это серверная сторона в вашем контроле здесь? –

+0

@Vinod Louis no, серверная сторона не в моем контроле, просто играя с этим ... – Felix

ответ

3

Это JSON, не JSONP.

Например, это JSON:

{"key": "value"} 

Это JSONP:

callback({"key": "value"}) 

Если служба не предоставляет JSONP, браузер не позволяет вам получать его (ограничения безопасности же происхождения).

То, как люди обходят такие же ограничения происхождения, состоит в использовании сервера. Вы можете либо сделать правильный код, который делает это на PHP, либо использовать такую ​​услугу, как AnyOrigin.

Вот пример AnyOrigin.

$.getJSON('http://anyorigin.com/get?url=metservice.com/publicData/tides2MonthAuckland&callback=?', function (data) { 
    $('#result1').html(JSON.stringify(data.contents)); 
}).fail(function (XMLHttpRequest, textStatus, errorThrown) { 
    $("#result2").html(textStatus); 
}); 

... и accompanying fiddle.

Вот example, который показывает, как эти данные могут быть использованы.

+0

, но это был трюк на стороне сервера, добавляющий обратный вызов (?), Который определен на стороне сервера, но здесь @Felix не имеет серверное управление –

+0

Не требуется управление на стороне сервера. Он работает в скрипке :-) AnyOrigin превращает любой запрос в запрос JSONP. jQuery превращает '?' в нечто вроде 'jQuery2910820198209182'. – FakeRainBrigand

+1

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

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