2013-10-21 14 views
8

Tôi gặp sự cố khi tôi cần đăng dữ liệu dưới dạng loại nội dung application/x-www-form-urlencoded.'FormData' không được xác định trong IE chỉ

var inputData = {cId:"444",pageNo:"1",latitude:"49.153236",longitude:"12.040905"}; 
    var data = new FormData(); 
    data.append('data', JSON.stringify(inputData)); 


    this.model.save(data, { 
     data: data, 
     processData: false, 
     cache: false, 
     contentType: false, 
     success: function (model, resultData) { 
      $.get(App.baseUrl + 'templates/all-offers-view.html', function (data) { 
       template = _.template(data, { 
        data: resultData 
       }); 
       that.$el.html(template); 
      }, 'html'); 

     }, 
     error: function (error) { 
      console.log("Error"); 
      return false; 
     } 
    }); 

Trong khi ở trên hoạt động tốt trong tất cả các trình duyệt khác, tôi gặp phải lỗi sau trong IE9.

SCRIPT5009: 'FormData' is undefined 
view.js, line 57 character 9 

dòng 57 được var data = new FormData();

Ive nghe FormData() là một hàm phụ thuộc trình duyệt và nó không liên quan đến thư viện jquery và rằng trong IE mất tích của mình.

Lý do tại sao tôi đang sử dụng phương pháp trên là vì tôi phải chuyển dữ liệu ở định dạng application/x-www-form-urlencoded.

Tôi không thể thay đổi mã phía máy chủ (vì điều này được liên kết với ứng dụng iphone trong appstore).

Tất cả những gì tôi có thể làm là thử với phía máy khách.

Có ai có giải pháp cho việc này không?

p.s: Tôi đang sử dụng backbone.js.

+3

Các [tương thích bảng] (https://developer.mozilla.org/en-US/docs/Web/API/FormData# Browser_compatibility) tại MDN cho biết bạn có thể gặp vấn đề với nhiều hơn IE. Ngoài ra còn có [liên kết về cách gửi dữ liệu biểu mẫu] (https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/Using_XMLHttpRequest?redirectlocale=en-US&redirectslug=DOM%2FXMLHttpRequest%2FUsing_XMLHttpRequest) mà không có API formData. – RobG

+0

:(.. đó là rất xấu ... bệnh cố gắng ra sửa chữa ... –

Trả lời

3

Hãy thử bên dưới mã:

if(typeof FormData == "undefined"){ 
var data = []; 
data.push('data', JSON.stringify(inputData)); 
} 
else{ 
var data = new FormData(); 
    data.append('data', JSON.stringify(inputData)); 
} 

Hope điều này giúp bạn

+2

Dòng 2 và 3 không giải quyết vấn đề với IE 8. Tôi hy vọng bài đăng này sẽ http://stackoverflow.com/ câu hỏi/15475215/formdata-in-ie8-9 –

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