2015-07-19 3 views
1

В настоящее время я экспериментирую с JSONP с использованием родного JavaScript. Я пытаюсь создать приложение, которое считывает данные из ссылки JSONP. Вот JSfiddle. В настоящее время я получаю сообщение об ошибке на моей консоли, где, похоже, проблема с запрошенной ссылкой. Ниже я представил фрагмент моего кода:Запрос данных от JSONP

function readResponse(resonse) { 
    document.getElementsByTagName('div')[0].innerHTML = resonse.feed.entry.length + ' entries retured'; 
console.log(resonse); 
} 

(function(){ 
    var src = '', 
    script = document.createElement('script'); 
script.src = src; 
    document.body.appendChild(script); 
    })(); 

Либо я что-то отсутствует, или я делаю что-то совершенно неправильно?

ответ

1

Нам нужен метод обратного вызова для запроса jsonp, иначе он выдаст синтаксическую ошибку. когда я запускаю его, я проверял, что объект ответа не имеет свойства подачи

resonse.feed is undefined. 

Имеет свойство маркера. Я попробовал ниже, и он начал работать.

window.readResponse = function(resonse) { 
    console.log(resonse); 
    document.getElementsByTagName('div')[0].innerHTML = resonse.markers.length + ' entries retured'; 
    console.log(resonse); 
}; 

(function(){ 
    var src = "http://digitaslbi-id-test.herokuapp.com/bus-stops?northEast=51.52783450,-0.04076115&southWest=51.51560467,-0.10225884&callback=readResponse" 
    ; 
    var script = document.createElement('script'); 

    script.src = src; 
    script.async = true; 
    document.body.appendChild(script); 
})(); 
+0

Установка свойства 'async' не требуется, поскольку это поведение по умолчанию для элементов сценария, созданных из JS. –

1

Ваша конечная точка возвращает чистый JSON. Ваш браузер, скорее всего, будет жаловаться на синтаксическую ошибку (разбор исходной фигурной скобки как начало инструкции блока), а readResponse никогда не вызывается

Эта конкретная конечная точка поддерживает JSONP путем добавления параметра «обратного вызова». В вашем случае это будет &callback=readResponse