"FormData" 在 IE 中未定义

9

我有一个问题,需要将数据提交为 content-type 为 application/x-www-form-urlencoded 的格式。

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

虽然以上代码在其他浏览器上正常运行,但在IE9中会出现以下错误。

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

在第57行代码中,使用了var data = new FormData();

我听说FormData()是一个依赖于浏览器的函数,并且与jquery库无关,在IE浏览器中可能会不存在。

我之所以使用上述方法是因为我必须以application/x-www-form-urlencoded格式传递数据。

我无法更改服务器端编码(因为它与App Store中的iPhone应用程序相关联)。

所有我能做的就是尝试客户端的解决方案。

有人有解决这个问题的方法吗?

p.s: 我正在使用backbone.js。


3
MDN 上的兼容性表格显示,您可能会在使用IE之外的浏览器上遇到问题。还有一个链接可了解如何在没有formData API的情况下提交表单数据。 - RobG
:(.. 非常糟糕... 我会尝试修复... - Roy M J
1个回答

3

请尝试以下代码:

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

希望这能帮到您。

2
第2行和第3行并不能解决IE 8的问题。我希望这篇文章能够帮助:https://dev59.com/vGUp5IYBdhLWcg3wJlAH - b_dubb

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接