IE 8/9의 Form Data 폴백
IE 8/9에는 FormData가 없지만 브라우저에는 FormData 기능이 필요합니다.이걸 위한 좋은 예비품이 있나요?
json 데이터를 전송하려고 하는데 서버에 파일을 전송해야 합니다.이 파일을 에 첨부합니다.formData
최신 브라우저에 접속하여XHR
부탁한다.왜냐면FormData
IE 8/9에는 존재하지 않습니다.이것은 분명히 실패합니다.
// I cant seem to get this to work with a file.
$.ajax({
url: '/genericHandlers/UploadDocsFile.ashx',
type: "POST",
data: model.toJSON(),
contentType: 'application/json'
}).done(function (data) {
log('stuff happened!');
});
다른 방법은 js에 가짜 양식 개체를 만든 다음 거기에 데이터를 추가하는 것입니다.
생각할 수 있는 솔루션은 1개뿐이지만, IE에 있어서는 실제로는 1대 1의 폴백이 아닙니다.FormData를 사용하는 최신 브라우저처럼 오래된 브라우저에서는 입력 필드를 바인딩할 수 없기 때문에 파일 전송에 사용할 수 있는 통신 API는 없습니다.그러나 iframe을 사용하여 전체 양식을 보낼 수 있습니다.이 경우 XHR DataForm 및 iframe을 지원하는 jquery.form 플러그인을 사용할 수 있습니다(브라우저가 FormData API를 지원하지 않을 경우 데이터가 iframe과 함께 전송됩니다).
XMLHttpRequests를 사용하여 수동으로 파일을 전송할 수 있습니다.여기에는 이에 대한 많은 정보가 있습니다.
브라우저가 다음을 사용할 수 있는지 테스트할 수 있습니다.FormData
오브젝트 우선:
if(typeof FormData !== 'undefined')
...
MDN에는 폴백용으로 변경할 수 있는 다음 기능이 있습니다.
var XHR = new XMLHttpRequest();
var urlEncodedData = "";
var urlEncodedDataPairs = [];
var name;
// We turn the data object into an array of URL encoded key value pairs.
for(name in data) {
urlEncodedDataPairs.push(encodeURIComponent(name) + '=' + encodeURIComponent(data[name]));
}
// We combine the pairs into a single string and replace all encoded spaces to
// the plus character to match the behaviour of the web browser form submit.
urlEncodedData = urlEncodedDataPairs.join('&').replace(/%20/g, '+');
이 답변은 질문하신 내용에 엄밀하게 대응하고 있지 않기 때문에 Mods가 해당 질문을 삭제할지 여부를 알고 있습니다.
그러나 당신의 질문은 제가 조사하던 문제와 밀접하게 관련되어 있습니다.그것은 오래된 브라우저의 성능이 저하된 상태에서 FormData()를 통해 드래그 앤 드롭 업로드를 제공하는 방법입니다.
dropzone.js라는 멋진 라이브러리가 있어 내 문제에 대한 완벽한 해결책을 제공합니다.아마도 가장 좋은 점은 라이브러리가 바로 사용할 수 있는 그레이스 풀 열화를 제공하여 오래된 브라우저에서의 파일 업로드를 지원한다는 것입니다.
출처를 바꾸어 말하면:
다행히 브라우저가 지원되지 않는 경우 dropzone.js 라이브러리에는 입력 필드와 전송 버튼이 포함된 맞춤 가능한 폴백클래스가 표시됩니다.
이 정보가 저처럼 구현이 간단하고 우아한 파일 업로드 솔루션을 찾고 있는 사용자에게 도움이 되었으면 합니다.
언급URL : https://stackoverflow.com/questions/10852446/fallback-for-formdata-in-ie-8-9
'programing' 카테고리의 다른 글
Perl을 사용한 간단한 JSON 해석 (0) | 2023.04.01 |
---|---|
JSON.stringify 및 json_decode()를 올바르게 사용하는 방법 (0) | 2023.04.01 |
브라우저 네이티브 JSON 지원(창).JSON) (0) | 2023.04.01 |
유효하지 않은 문자(ORA-00911)는 어디에 있습니까? (0) | 2023.04.01 |
Angular2 이벤트 유형 (0) | 2023.04.01 |