development

IE는 서버에서 json 결과를 열거 나 저장하라는 메시지를 표시합니다.

big-blog 2021. 1. 7. 20:38
반응형

IE는 서버에서 json 결과를 열거 나 저장하라는 메시지를 표시합니다.


호환 모드의 Internet Explorer는 서버에서 ajax 콜백 메서드로 데이터를 가져오고 데이터를 저장하거나 열려면 대화 상자를 표시합니다. 그것을 제거하는 방법?

클라이언트 말한다 :

$.ajax({
        type:'POST',
        data: $("#UIdlgHolder > form").serialize(),
        url: $("#UIdlgHolder > form").attr("action"),
        success: function (data, textStatus, jqXHR) {
            {
                alert(data.message);
            }
}

서버 답변 :

return new JsonResult { Data = new { result = false, message = "Yay!" } };

이 질문이 당신과 관련이있을 수 있습니다.

IE가 다운로드를 제안하는 대신 단순히 Application json을 표시하도록 설득 할 수 있습니까?

그렇지 않은 경우 :

ajax 옵션에서 예상되는 dataType을 설정해 보셨습니까? 즉 dataType : 'json'

'application / json'또는 'text / javascript'와 같은 다른 콘텐츠 유형을 사용해 보셨습니까?


올바른 방법은 아니지만 콘텐츠 유형을 text / html로 설정하면 IE가이 문제를 올바르게 처리합니다.

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

F12 도구가 IE9에서 제공하는 모든 버전에서 작동합니다.


MVC를 사용하는 경우이를 처리하는 한 가지 방법은 다음과 같이 Json (object) 메서드 재정의 (숨기기) 하는 기본 컨트롤러를 구현하는 것입니다.

public class ExtendedController : Controller
{
    protected new JsonResult Json(object data)
    {
        if (!Request.AcceptTypes.Contains("application/json"))
            return base.Json(data, "text/plain");
        else
            return base.Json(data);
    }
}

이제 컨트롤러는 모두 ExtendedController를 상속하고 간단히 return Json(model);...

  • 멋지게 재생되는 브라우저의 응답 콘텐츠 유형을 수정하지 않고 (<= IE9!)
  • Json(data, "text/plain")다양한 Ajax 액션 메소드에서 사용하는 것을 기억할 필요없이

이것은 jQuery 파일 업로드에 의해 만들어진 것과 같은 IE8 및 IE9에서 "열기 또는 저장"메시지를 표시하는 json 요청과 함께 작동합니다.


POST 메서드를 사용하여 ajax 요청을 보내려고 했습니까? 서버에서 결과를 반환하는 동안 콘텐츠 유형을 'text / x-json'으로 설정할 수도 있습니다.


응답을 반환하기 전에 콘텐츠 유형을 "application / json"서버 측 대신 "text / html"로 변경했습니다. 다른 솔루션도 추가 된 블로그 게시물에 설명했습니다.

http://blog.degree.no/2012/09/jquery-json-ie8ie9-treats-response-as-downloadable-file/


안타깝게도 이것은 Internet Explorer를 사용하는 또 다른 성가신 특징입니다.

여기에 이미지 설명 입력

간단한 해결책은 PC에서 작은 .reg 파일을 실행하여 IE에 .json 파일을 열거 나 저장할지 여부를 묻는 것이 아니라 자동으로 열도록 지시하는 것입니다.

여기에 필요한 파일의 사본을 넣었습니다.

JSON MIME 유형

이를 실행하려면 관리자 권한이 있어야합니다.


Is above javascript code the one you're using in your web application ? If so - i would like to point few errors in it: firstly - it has an additional '{' sign in definition of 'success' callback function secondly - it has no ')' sign after definition of ajax callback. Valid code should look like:

$.ajax({
        type:'POST',
        data: 'args',
        url: '@Url.Action("PostBack")',
        success: function (data, textStatus, jqXHR) {
                alert(data.message);
            }
    });

try using above code - it gave me 'Yay' alert on all 3 IE versions ( 7,8,9 ).


I faced this while using jQuery FileUpload plugin.

Then I took a look in their documentation, most exactly in the Content-Type Negotiation section and followed their suggestion for Ruby/Rails.

render(json: <some-data>, content_type: request.format)

Which fixed the issue for me.

빠른 설명 : 이전 IE / Opera 버전의 경우이 플러그인은 text/plain또는 text/html콘텐츠 유형이 있는 iframe을 사용 하므로에 강제로 응답하면 json브라우저에서 다운로드를 시도합니다. 요청에서와 동일한 콘텐츠 유형을 사용하면 모든 브라우저에서 작동합니다.


필자의 경우 IE11은 콘솔에 JS 구문 오류가있을 때 (정확히 어디에 있는지는 중요하지 않음) 그런 방식으로 작동 dataType: 'json'하고 전혀 영향을 미치지 않는 것 같습니다.

참조 URL : https://stackoverflow.com/questions/6114360/ie-prompts-to-open-or-save-json-result-from-server

반응형