0

私はjquery-1.7.2.min.jsを使用しています

次のJavaScriptがあります:

$(function() {
    $("#del_category").click(function() {
        if (confirm('Are you sure you want to delete this category?')) {
            $.ajax({
                type: "POST",
                url: "someurl",
                datatype: "json",
                csd: window.parent.CSD,
                success: function(data) {
                    if (data.isSuccess) {
                        if (data.isFree) {
                            // error appears if this function invokes
                            this.csd.Popup.currentWindow.hideDialog();
                        } else {
                            alert("Category uses in some FAQ.");
                        }
                    } else {
                        alert("Error. Category was not deleted.");
                    }
                }
            });
        }

        return false;
    });
});

IE9 を除くすべてのブラウザで正常に動作します。IE9 では正常に動作しますが (すべての関数が呼び出されます)、js エラーが表示されます: SCRIPT5009: 'String' is undefined

どうすればこれを修正できますか?

編集

このスクリプトはエラーなしで動作します:

$(function() {
    $("#del_category").click(function() {
        window.parent.CSD.Popup.currentWindow.hideDialog();
    });
});

エラーは、ajax OnSuccess イベント ハンドラーでのみ表示されます。

4

1 に答える 1

0

hideDialog();の中に aを入れてみてくださいsetTimeout。jQueryが完了する前にダイアログが破棄されているため、エラーが発生していると思います。

$(function() {
    $("#del_category").click(function() {
        if (confirm('Are you sure you want to delete this category?')) {
            $.ajax({
                type: "POST",
                url: "someurl",
                datatype: "json",
                csd: window.parent.CSD,
                success: function(data) {
                    if (data.isSuccess) {
                        if (data.isFree) {
                            // error appears if this function invokes
                            var csd = this.csd;
                            setTimeout(function() {
                                csd.Popup.currentWindow.hideDialog();
                            }, 0);
                        } else {
                            alert("Category uses in some FAQ.");
                        }
                    } else {
                        alert("Error. Category was not deleted.");
                    }
                }
            });
        }

        return false;
    });
});
于 2013-11-25T16:14:40.997 に答える