programing

IE9 JSON 데이터 "이 파일을 열거나 저장하시겠습니까?"

starjava 2023. 3. 3. 16:47
반응형

IE9 JSON 데이터 "이 파일을 열거나 저장하시겠습니까?"

IE9에서 jQuery 어플리케이션 테스트를 시작했습니다.문제가 좀 생겼나 보네JSON 데이터를 Javascript 메서드로 되돌리면 항상 "Do you want to open or save this file?"이라는 프롬프트가 표시되고 다음 3개의 버튼이 표시됩니다.열기, 저장 및 취소.물론 javascript는 JSON 오브젝트에 설정된 값에 따라 액션을 취하고 있지만 IE9이 스크립트에 넘기지 않기 때문에 그 이후로는 후속 액션을 실행할 수 없습니다.

이 문제에 직면한 다른 사람은요?여기 스냅샷이 있습니다.여기에 이미지 설명 입력

ASP.net MVC를 사용하여 이 문제를 해결하려는 사용자가 있다면 MVC 프레임워크에 내장된 다음 방법을 사용했습니다.JsonResult의 콘텐츠 유형과 인코딩을 업데이트하기만 하면 됩니다.

public ActionResult Index(int id)
{
        // Fetch some data
        var someData = GetSomeData();

        // Return and update content type and encoding
        return Json(someData, "text/html", System.Text.Encoding.UTF8,
                        JsonRequestBehavior.AllowGet);
}

이것으로 문제가 해결되었습니다!

(이 질문에 대한 답변은 원래 게시되었습니다.)

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

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);
    }
}

이제 모든 컨트롤러가 Extended Controller를 상속하여return Json(model);...

  • 올바르게 재생되는 브라우저(<=IE9! 아님)의 응답 콘텐츠 유형을 변경하지 마십시오.
  • 사용하는 것을 잊지 않고Json(data, "text/plain")다양한 Ajax 액션 방법으로

이는 jQuery File Upload에 의해 작성된 것과 같이 IE8 및 IE9에서 "Open or Save" 메시지가 표시되는 json 요청과 함께 작동합니다.

어제도 (비동기적으로 업로드된 파일의) URL 목록을 반환한 WebAPI에서 이 문제에 직면했습니다.

컨텐츠 유형을 기본 "application/json; charset=" 대신 "text/multiple"로 설정하십시오.UTF-8" WebAPI 서비스.JSON 문자열로 응답을 받고 $.parseJ를 사용했습니다.SON을 JSON 개체로 변환합니다.

public async Task<HttpResponseMessage> Upload()
{
  // ...
  var response = Request.CreateResponse(HttpStatusCode.OK, files);
  response.Content.Headers.ContentType = new MediaTypeHeaderValue("text/html");
  return response;
}

// result is an iframe's body content that received response.
$.each($.parseJSON(result.html()), function (i, item)
{
  console.log(item.Url);
});

내 경우 콘텐츠는응답 헤더에 "application/json; charset="을 입력합니다.UTF-8", IE 9에 프롬프트가 표시됩니다.그러나 "text/charset"로 변경되면 프롬프트가 표시되지 않지만, 모든 수달 브라우저는 "application/json; charset="에 문제가 없습니다.UTF-8인치

사실, 당신이 옳았어요 @ Eric Law.Json 결과에서 콘텐츠 유형을 설정한 후 작동했습니다.다음 행을 추가해야 했습니다.

 result.ContentEncoding = System.Text.Encoding.UTF8; 
 result.ContentType = "application/json; charset=UTF-8

언급URL : https://stackoverflow.com/questions/5388893/ie9-json-data-do-you-want-to-open-or-save-this-file

반응형