2017-08-01 22 views
7

đang tạo ra một đối tượng formData sử dụng hình thức id và được làm như sau:iterating qua formData đối tượng trong trình duyệt Internet Explorer, sử dụng javascript

var formDataDetails = new FormData(document.getElementById("form_id")); 
for (var entry of formDataDetails{ 
    res[entry[0]] = entry[1]; 
} 

Am sau làm JSON stringify và làm POST.

Nhưng tôi đã phát hiện ra rằng gần đây, for..of vòng lặp không được hỗ trợ trong 'Internet Explorer'. Và tôi tin rằng sử dụng vòng lặp for..in là không chính xác vì nó được sử dụng để lặp qua các đối tượng đếm được (lặp qua các thuộc tính của một đối tượng thay vì).

Tôi nên làm thế nào để lặp lại thông qua formData, cho Internet Explorer?

+1

Chưa có câu trả lời nào. Điều gì sẽ là cách tốt nhất để nắm bắt chi tiết biểu mẫu và làm POST, để mã hoạt động cũng trong IE? –

+0

Tôi đang đối mặt với cùng một vấn đề. Tôi vẫn đang cố giải quyết .. Đau đầu đang đến. – Delphine

Trả lời

0

Tôi thấy rằng, như của bài đăng này, IE vẫn không hoạt động đáng tin cậy trong for..of lặp qua các đối tượng FormData. Vì vậy, giải pháp của tôi, chỉ cần tránh FormData khi bạn sẽ cần phải lặp lại bộ sưu tập. FormData hoạt động tốt trong IE nếu bạn chỉ sử dụng nó để đăng dữ liệu biểu mẫu.

Nếu bạn cần lặp lại các giá trị của biểu mẫu trước khi chúng được gửi đi, bạn có thể làm như tôi làm - chỉ cần làm việc trực tiếp với bộ sưu tập form.elements.

Something như thế này:

export function form2Obj(f) { 
    var elemArray = f.elements; 
    var formObj = {}; 
    for (var k in elemArray) { 
     var input = elemArray[k]; 
     if (!input || !input.name || !input.value) continue; 
     formObj[input.name] = input.value; 
     // etc, need special handling for inputs of type radio 
     // checkbox, textarea, and select most likely 
    } 
    return formObj; 

}

Đối với hồ sơ, tôi đang sử dụng webpack để biên dịch để ES6. Khi tôi biên dịch trong chế độ dev, IE có thể xử lý vòng lặp for..of. Khi tôi biên dịch trong chế độ sản xuất, IE thực hiện không phải là hoạt động.

+1

Điều thú vị là, mỗi lần tôi mở IE để kiểm tra ứng dụng của mình, nó vẫn đang hỏi tôi "Bạn có muốn đặt IE làm trình duyệt mặc định của bạn không?". Hilarious. – jomofrodo

Các vấn đề liên quan