web-dev-qa-db-ja.com

'FormData'はIEのみ

データをコンテンツタイプ_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_形式で渡す必要があるためです。

サーバーサイドのコーディングを変更できません(これはappstoreのiphoneアプリにリンクされているため)。

私にできることは、クライアント側で試すことだけです。

誰かがこれに対する解決策を持っていますか?

p.s:backbone.jsを使用しています。

9
Roy M J

以下のコードを試してください:

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

これがお役に立てば幸いです

3
harsh4u