IE가 파일을 포함하는 jQuery 멀티파트 형식의 데이터를 제출하는 동안 json 응답을 다운로드하려고 합니다.
양식을 제출하려고 합니다.filejQuery를 통해 필드에 입력합니다.양식 플러그인, 코드는 다음과 같습니다.
$('form').ajaxSubmit({
url: "/path",
dataType: "json",
contentType: "multipart/form-data"
...
서버는 응답으로 json을 반환합니다.응답을 파일로 다운로드하는 IE를 제외한 모든 브라우저에서 잘 작동합니다.양식에서 파일 필드를 삭제해도 제대로 작동합니다.
저는 여기와 구글에서 다양한 솔루션을 보았고 기본적으로 설정을 포함한 거의 모든 것을 시도했습니다.enctypejQuery를 통해 폼을 확인했지만 작동하지 않았습니다.
어떤 제안이라도 환영합니다.
컨트롤러에서 JSON을 "text/html"로 반환하고 JQuery.parseJSON()을 사용하여 클라이언트 측에서 해석할 수 있습니다.
컨트롤러:
return this.Json(
new
{
prop1 = 5,
prop2 = 10
},
"text/html");
클라이언트 측:
jsonResponse = $.parseJSON(response);
if(jsonResponse.prop1==5) {
...
}
이 솔루션은 나에게 효과가 있었다.
이에 대한 직접적인 해결책을 찾지 못했지만 결국 다음과 같은 회피책을 구현했습니다.ajax 설정에서 사용한 후 컨트롤러에서 플레인텍스트를 반환하여 클라이언트 측에서 값을 구분하고 해석했습니다.그렇게 IE와 Forefox는 응답을 다운로드하는 것을 중단했다.
나는 평문을 반환하는 것 외에는 그 행동을 막을 방법이 없었다.JSON을 보통 텍스트로 되돌리고 $.parseJ로 해석해 보았습니다.SON, 하지만 몇 가지 js 오류로 인해 작동하지 않았습니다.
답장만 보내주시면 됩니다.'Content-Type', 'text/html'header를 클릭합니다.
셋팅 완료Content-Type: text/html
이것은 IE8이 인식되지 않기 때문에 발생합니다.application/...mimtype을 선택합니다.난 이거면 돼.
도움이 됐으면 좋겠다.
여러분들과 같은 상황: 문제는 오직enctype="multipart/form-data"에 사용되는 형태$(form).ajaxSubmit(...)기능.
저와 제 팀은 (이 함수로) 교체해야 했습니다.dataType: 'json'을 선택하다.dataType: 'text'추가하다responseText = $.parseJSON(responseText);서버 응답 해석을 강제합니다.
물론 서버 측에서도 대응해야 했습니다."text/plain"머리글 대신 머리글"application/json"
자랑스럽지는 않아요:(IE는 확실히 모든 것을 죽이고 있습니다...
zmonteca의 조언은 시도하지 않았지만(이미 너무 많은 시간을 들여서) 가치가 있을 것 같습니다.괜찮으시다면 알려주세요.
도움이 됐으면 좋겠다!
당신이 Zend와 함께 일한다면
$this->getResponse()->setHeader('Content-Type', 'text/html');
컨트롤러의 액션에 대응합니다.클라이언트 측에서는 jQuery의 경우 다음 작업을 수행할 수 있습니다.
data = $.parseJSON(data);
이 사이트에서는 응답을 http://forum.jquery.com/topic/jquery-form-malsup-ie7-file-download-security-warning-on-ajax-file-upload로 정리하는 방법에 대해 설명합니다.
서버에 문자열로 JSON을 반환함으로써 문제를 해결할 수 있을 것 같았습니다.그 후 완전한 이벤트 내에서 JSON.parse()를 사용했습니다.
Zend Framework에서 다음과 같은 회피책을 생각해 냈습니다.
if (!$this->_request->isXmlHttpRequest()) {
die('<textarea>'.Zend_Json::encode($data).'</textarea>');
}
$this->view->assign($data);
콘텐츠 삭제서버사이드에서 타이핑하면 됩니다.
언급URL : https://stackoverflow.com/questions/8151138/ie-tries-to-download-json-response-while-submitting-jquery-multipart-form-data-c
'programing' 카테고리의 다른 글
| TypeError: 정의되지 않은 'contextTypes' 속성을 읽을 수 없습니다. (0) | 2023.03.17 |
|---|---|
| 옵션으로서 @Value를 정의하는 방법 (0) | 2023.03.17 |
| 스프링 데이터: "삭제 기준"이 지원됩니까? (0) | 2023.03.17 |
| 오류: getaddrinfo ENOTFOUND registry.npmjs.org registry.npmjs.org:443 (0) | 2023.03.17 |
| UTF-8 문자 인코딩이 json_encode()와 경쟁합니다. (0) | 2023.03.17 |