2015-11-27 1 views
0

Я пытался запустить пример около YQL from Yahoo. Это код, который я должен использовать:Ошибка: тип MIME ('application/json') не является исполняемым, а строгая проверка типа MIME включена с помощью операторов YQL?

<body> 
<div id='results'></div> 
<script src='https://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20rss%20where%20url%3D%22http%3A%2F%2Frss.news.yahoo.com%2Frss%2Ftopstories%22&format=json&diagnostics=true&callback='></script> 
</body> 
<script type='text/javascript'> 
function top_stories(o){ 
    var items = o.query.results.item; 
    var output = ''; 
    var no_items=items.length; 
    for(var i=0;i<no_items;i++){ 
    var title = items[i].title; 
    var link = items[i].link; 
    var desc = items[i].description; 
    output += "<h3><a href='" + link + "'>"+title+"</a></h3>" + desc + "<hr/>"; 
    } 
    document.getElementById('results').innerHTML = output; 
} 
</script> 

Я прочитал другой вопрос с той же ошибкой, и большинство из них дать ответ, похожий на это один

By adding a callback argument, you are telling jQuery that you want to make a request for JSONP using a script element instead of a request for JSON using XMLHttpRequest. JSONP is not JSON. It is a JavaScript program.

Моя проблема в том, я использую JavaScript и я не могу найти код в приведенном выше скрипте, где я ожидаю JSONP. Я полный новичок, так что, возможно, я совершил глупую ошибку. Что не так с кодом выше? Благодарю.

ответ

0

Элемент <script> в строке 3 запрашивает JSONP. Это просто жестко закодировано для этого, вместо того, чтобы добавлять JS (что было бы нормально для JSONP).

YQL предоставляет JSON, потому что вы сказали callback=, а затем остановились, фактически не указав имя функции обратного вызова.

+0

Итак, я должен просто удалить 'callback ='? –

+0

Удаление 'callback =' полностью также не даст имя обратного вызова, поэтому YQL продолжит доставку JSON вместо JSONP. Если вы хотите JSONP, тогда вы должны дать ему имя обратного вызова. Если вы хотите JSON, то вы не можете загрузить его с помощью ''