JSON получен, но ошибка для «Ресурса, интерпретируемого как Script, но переданного с приложением MIME-типа / json» - PullRequest
1 голос
/ 06 июля 2011

Я анализирую файл JSON и добавляем данные в выпадающий список HTML, код следующий:

$.getJSON(
    "http://mobile.icta.lk/services/railwayservice/getAllLines.php?lang=en&jsoncallback=?",
    function(data) {

        var $s = $('.txtline').empty();

        // the actual contents of this loop will be
        // specific to the data
        for (var k in data) {
            $('<option></option>')
                .val(data[k].value)
                .text(data[k].text)
                .appendTo($s);
        }
    }
)

Я получаю ошибку как,

Resource interpreted as Script but transferred with MIME type application/json.

getAllLines.php:2Uncaught SyntaxError: Unexpected token :

Ответы [ 2 ]

4 голосов
/ 06 июля 2011

Проблема в том, что этот удаленный сервер возвращает JSON, а не JSONP. Возвращает:

{"lines":[{"line":"COLOMBO - BADULLA"},{"line":"COLOMBO - MATALE"},{"line":"COLOMBO - PUTTLAM"},{"line":"COLOMBO - THANDIKULAM"},{"line":"COLOMBO - TALAIMANNAR"},{"line":"COLOMBO - BATTICALOA"},{"line":"COLOMBO - TRINCOMALEE"},{"line":"COLOMBO - MATARA"},{"line":"COLOMBO - AVISSAWELLA"},{"line":"COLOMBO - MIHINTALE"}]}

вместо:

someCallbackName({"lines":[{"line":"COLOMBO - BADULLA"},{"line":"COLOMBO - MATALE"},{"line":"COLOMBO - PUTTLAM"},{"line":"COLOMBO - THANDIKULAM"},{"line":"COLOMBO - TALAIMANNAR"},{"line":"COLOMBO - BATTICALOA"},{"line":"COLOMBO - TRINCOMALEE"},{"line":"COLOMBO - MATARA"},{"line":"COLOMBO - AVISSAWELLA"},{"line":"COLOMBO - MIHINTALE"}]})

Вы не сможете использовать удаленный домен, используя AJAX, если этот удаленный ресурс не поддерживает JSONP.

1 голос
/ 06 июля 2011

Вот небольшой скрипт:

<?php
    // file url: http://localhost/remote-json-proxy.php
    $url = 'http://mobile.icta.lk/services/railwayservice/getAllLines.php';
    $qsa = '?';
    foreach($_GET as $n => $v) {
        if($n != 'callback') {
            $qsa .= '&' . $n . '=' . rawurlencode($v);
        }
    }
    $json = file_get_contents($url . $qsa);
    echo sprintf('%s(%s);', $_GET['callback'], $json);
?>

Использование:

<!-- file url: http://localhost/test.htm -->
<script type='text/javascript'>
    $.getJSON('remote-json-proxy.php?lang=en&this=that&callback=?', function(data) {
        console.log(data);
    })
</script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...