Ajax Post适用于Chrome,Firefox,但不适用于Internet Explorer



>我有以下ajax代码:

$.ajax({
    type: "POST",
    async: false,
    url: "Plan.aspx/SaveData", 
    data: JSON.stringify(DTO), 
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    cache: false,
    traditional: true,
    success: function (response) {
        if (response.d == "YES") {
            check = response.responseText;
        }
    },
    error: function (response) {
        check = "Error: " + response.responseText;
        return false;
    }
});

此代码适用于 Firefox 和 chrome,但不适用于 Internet Explorer。 两端均未发生错误。 奇怪的是,代码在Visual Studio IDE(VS 2013(中工作,但在IIS 7.5上部署时则不行。 我到处寻找答案,但没有运气。

这里有人有什么想法吗?

更新:编辑以添加成功代码,该代码永远不会执行,因为 ajax 调用永远不会在 IE 上执行,但在 Firefox 和 Chrome 上执行!

好的,想通了。 我更改了代码,用函数调用包装了它,并添加了 try catch 以使其更易于调试。 我的代码:

    function postdata(DTO) {
        var success = false;
        try {
            $.ajax({
                type: "POST",
                async: false,
                url: "Plan.aspx/SaveData",
                data: JSON.stringify(DTO), 
                contentType: "application/json; charset=utf-8",
                dataType: "json",
                cache: false,
                traditional: true,
                success: function (response) {
                    success = true;
                },
                error: function (response) {
                    alert("Ajax post failed, the error is: " + response.responseText)//+ " Test = " + test);
                    success = false;
                }
            });
        }
        catch (Error) {
            success = false;
        }
        return success;
    }

catch 捕获错误JSON is undefined,在这里我认为它是浏览器原生的,而不是 IE,我不得不添加一个名为 json3.js 的 javascript 文件,你可以在这里找到它:

https://bestiejs.github.io/json3/

现在它可以在所有三个浏览器中工作...现在,如果我能让 Edge 工作......那是另一个故事...不知道为什么我以前没有使用尝试捕获,可以节省我一些时间。

最新更新