JSON-ответ возвращается как файл при вызове ajax - PullRequest
1 голос
/ 18 января 2011

Я звоню в службу API REST Vimeo, используя следующий фрагмент кода, данные выдаются как нулевые с вызовом 200 OK.

    $.ajax({
        url:'http://vimeo.com/api/rest/v2?format=json&method=vimeo.videos.getInfo&video_id=7100569',
        dataType:'json',
        success:function(data){
            alert(data);
        }
    });

Когда я копирую, вставляю URL (http://vimeo.com/api/rest/v2?format=json&method=vimeo.videos.getInfo&video_id=7100569) в браузер, он дает мне файл для загрузки. Я проверил примеры примеров JavaScript, которые работают

var url='http://vimeo.com/api/rest/v2?format=json&method=vimeo.videos.getInfo&video_id=7100569';
        var js = document.createElement('script');
        js.setAttribute('type', 'text/javascript');
        js.setAttribute('src', url);
        document.getElementsByTagName('head').item(0).appendChild(js);

Я просто хотел знать, что я здесь делаю не так. Обратите внимание, что второй фрагмент дает допустимую ошибку JSON вместо нулевого ответа.

Ответы [ 3 ]

1 голос
/ 18 января 2011

Попробуйте использовать метод, описанный здесь .

1 голос
/ 18 января 2011

После того, как я посмотрел его несколько раз (и опубликовал, а затем удалил мой комментарий), вот что я придумал:

Тот факт, что вы получаете «файл», является лишь функцией того, как браузер обрабатывает результат. Chrome отображал результат просто отлично, в то время как IE пытался сохранить его в файл.

У вас возникла проблема, поскольку вы не можете выполнять запросы AJAX в домене, отличном от того, с которого была создана страница. Это то, к чему стремился Дэвид Дорвард. В качестве примера они приводят jsonp (который отличается от json). По сути, вы должны иметь возможность изменить dataType в вашем вызове ajax на «jsonp», и, надеюсь, он начнет работать для вас.

НТН

1 голос
/ 18 января 2011

Данные в формате JSON, а не JSON-P. Это не JSON-P, поэтому вы не можете использовать его как JavaScript.

...