Ответ json xhr открывает всплывающее окно загрузки файла

Для одного из наших запросов ajax (с ответом .json) некоторые из наших клиентов жаловались, что они видят приглашение «Загрузка файла», в котором пользователю предлагается загрузить ответ .json. Я сбит с толку, потому что, учитывая, что это ответ xhr, этого никогда не должно произойти. Кто-нибудь видел это?

Спасибо


person Community    schedule 02.07.2009    source источник
comment
почему вы добавляете .json в качестве расширения файла? я думаю, вы не можете этого сделать, если вы не настроите браузер на выполнение определенных действий для файла .json (в FF перейдите к параметрам)   -  person nightingale2k1    schedule 02.07.2009


Ответы (5)


Для людей, которые используют ASP MVC и имеют ту же проблему с IE, используйте это при возврате вашего ответа:

return Json(result, "text/plain");

Редактировать: стандартный тип: «application/json», но не работает с IE. использование text/html опасно.

person Reza    schedule 24.06.2011
comment
Лучший ответ, чем @jrharshath, потому что text/plain технически некорректен. Это грубый взлом старых версий IE. - person Mark E. Haase; 24.08.2012

попробуйте указать в ответе тип MIME "текст/обычный". или просто удалите расширение ".json" из URL-адреса (например, попробуйте .txt или .js)

person jrharshath    schedule 02.07.2009
comment
и убедитесь, прежде чем указать это, что вы не устанавливаете заголовки где-либо еще в своем коде (т.е. указываете тип mime как что-то отличное от text/plain). - person jellyfishtree; 02.11.2010
comment
Этот ответ предполагает, что вы контролируете ответ. Как насчет вызова стороннего WS, который отвечает JSON с установленным типом контента, не дай Бог, json? - person phtrivier; 13.12.2011
comment
Да, мне помогло изменение ContentType на text/html (из application/json). Я написал об этом сообщение в блоге с некоторыми дополнительными подробностями: "nofollow noreferrer">blog.degree.no/2012/09/ - person Andreas; 09.10.2012

Не уверен, что вы нашли решение, но у меня была аналогичная проблема, когда IE пытался загрузить любые ответы JS. Чтобы это исправить, мне пришлось сделать так, чтобы format.html отображался выше format.js в блоке ответа:

def index

  # ...

  respond_to do |format|
    # html must be above js, otherwise IE will try to download the JS
    format.html
    format.js
  end
end

Надеюсь это поможет.

person Chris Blunt    schedule 26.08.2009
comment
Это решение сработало для меня. Не знаю, почему (другие браузеры работали нормально). - person Kyle Fox; 27.05.2010
comment
Заголовок Accept IE: Accept: image/gif, image/jpeg, image/pjpeg, image/pjpeg, application/x-shockwave-flash, */* Заголовок Accept Firefox: Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Пока не уверен, что означает q=, но могу поспорить, что это как-то связано с тем, насколько ему нужен контент этого конкретного типа. - person Peter Kovacs; 07.10.2010

Я использую загрузчик файлов QQ ajax, и я обнаружил, что мне нужно установить тип контента на «text/json», чтобы он работал правильно.

person gabeodess    schedule 18.01.2013
comment
Я пробовал это, но это не сработало для меня. IE7 пытается загрузить файл php, указанный в качестве конечной точки. - person Saul Berardo; 26.01.2013

Отбросьте .json и установите тип содержимого как text/html. IE не знает, какой тип файла вы ему отправляете, поэтому предлагает скачать. Он знает, что делать с text/html :)

person Community    schedule 03.08.2009