Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ajax ';JSON';仅在IE中存在未定义的错误_Ajax_Wcf_Json_Internet Explorer - Fatal编程技术网

Ajax ';JSON';仅在IE中存在未定义的错误

Ajax ';JSON';仅在IE中存在未定义的错误,ajax,wcf,json,internet-explorer,Ajax,Wcf,Json,Internet Explorer,我正在对一个WCF服务进行AJAX调用,当我传入数据时,我使用JSON.stringify() 该调用返回并在FF和Chrome中正常工作,但不是IE8。我收到一个错误:“JSON”未定义 建议 p、 我也希望它在IE7中起作用,使用json2实现一致的跨浏览器实现 更新 查一下图书馆。它就像一个符咒 我希望这有帮助 希望这有帮助。很久以前,我从一些网上渠道得到了这个。没有他们的链接。很抱歉,我无法引用参考资料 var JSON = JSON || {}; // implement JSON

我正在对一个WCF服务进行AJAX调用,当我传入数据时,我使用JSON.stringify()

该调用返回并在FF和Chrome中正常工作,但不是IE8。我收到一个错误:“JSON”未定义

建议


p、 我也希望它在IE7中起作用,使用json2实现一致的跨浏览器实现

更新 查一下图书馆。它就像一个符咒

我希望这有帮助


希望这有帮助。很久以前,我从一些网上渠道得到了这个。没有他们的链接。
很抱歉,我无法引用参考资料

var JSON = JSON || {};
// implement JSON.stringify serialization
JSON.stringify = JSON.stringify || function(obj) {
    var t = typeof (obj);
    if (t != "object" || obj === null) {
        // simple data type
        if (t == "string")
            obj = '"' + obj + '"';
        return String(obj);
    } else {
        // recurse array or object
        var n, v, json = [], arr = (obj && obj.constructor == Array);
        for (n in obj) {
            v = obj[n];
            t = typeof (v);
            if (t == "string")
                v = '"' + v + '"';
            else if (t == "object" && v !== null)
                v = JSON.stringify(v);
            json.push((arr ? "" : '"' + n + '":') + String(v));
        }
        return (arr ? "[" : "{") + String(json) + (arr ? "]" : "}");
    }
};
// implement JSON.parse de-serialization
JSON.parse = JSON.parse || function() {
    var r = "(?:-?\\b(?:0|[1-9][0-9]*)(?:\\.[0-9]+)?(?:[eE][+-]?[0-9]+)?\\b)", k = '(?:[^\\0-\\x08\\x0a-\\x1f"\\\\]|\\\\(?:["/\\\\bfnrt]|u[0-9A-Fa-f]{4}))';
    k = '(?:"' + k + '*")';
    var s = new RegExp(
            "(?:false|true|null|[\\{\\}\\[\\]]|" + r + "|" + k + ")", "g"), t = new RegExp(
            "\\\\(?:([^u])|u(.{4}))", "g"), u = {
        '"' : '"',
        "/" : "/",
        "\\" : "\\",
        b : "\u0008",
        f : "\u000c",
        n : "\n",
        r : "\r",
        t : "\t"
    };
    function v(h, j, e) {
        return j ? u[j] : String.fromCharCode(parseInt(e, 16));
    }
    var w = new String(""), x = Object.hasOwnProperty;
    return function(h, j) {
        h = h.match(s);
        var e, c = h[0], l = false;
        if ("{" === c)
            e = {};
        else if ("[" === c)
            e = [];
        else {
            e = [];
            l = true;
        }
        for ( var b, d = [ e ], m = 1 - l, y = h.length; m = 0;)
                            delete f[i[g]];
                }
                return j.call(n, o, f);
            };
            e = p({
                "" : e
            }, "");
        }
        return e;
    };
}();

我对IE9有意见。IE9以“怪癖”模式呈现我的页面,解决方案只是添加
。这让我摆脱了“怪癖”模式,我确信它不仅仅解决了这个问题

在IE中打开兼容性视图设置,并从“已添加到兼容性视图的网站”的列表框中删除localhost。
这对我很有用。

为了让你的函数在IE中更好地工作,请在你的文件中导入JSON2解析器代码,因为IE默认不支持
JSON.Stringify()


可以发现

JQuery 2.x不再与IE 6-8兼容

我知道主要的问题是关于JQuery的旧版本,但这对我来说是造成错误的原因。我安装了JQuery 1.x,它与JQuery 2.x兼容,并添加了以下检测代码:

<!--[if lt IE 9]>
 <script src="js/jquery-1.11.1.min.js"></script>
<![endif]-->
<!--[if gte IE 9]>
 <script src="js/jquery.min.js"></script>
<![endif]-->


我不认为IE8在本机上支持
stringify()
方法(有一些库实现了它,但您还没有指定是否正在使用它们中的任何一个)。在“跨域安全性”下查看:参考以下内容我会以同样的方式引用JSON吗?它会与IE8的本机实现冲突吗?会。否(它检查现有的JSON对象)。如果IE有一个实现,那么我不知道为什么会出现JSON未定义错误(它被称为其他错误吗?)。我对IE了解不够,无法进一步评论。IE8应该有一个本机实现。IE7没有。如果您使用的是jquery或dojo之类的js工具包,很可能它有自己的实现,因此您也可以使用它,并避免向代码库中添加另一个组件。请注意,如果打开了一个quirks模式页面,并且它包含一个iframe,那么iframe也将是quirks模式,而不会有json库。因此,如果你不控制用户浏览你的父框架,JSON可能会缺少更新的IE版本。请将其添加到js文件的顶部。如果是avl,它将使用本机版本。如果不是,它使用自定义实现。这是否意味着JSON没有在IE中实现,我们需要手工编写其解析功能?!另外,结尾的括号作为函数填充了什么?我不清楚为什么需要它们…@KonradViltersten传统浏览器没有实现它。现代浏览器确实如此。我不明白你的第二个问题。请明确您不清楚的部分。如果在代码示例中一直向下滚动,您将看到有
()在最后。我希望只需要一个大括号,因为您正在声明一个函数。我错过了什么?IE7不支持JSON
stringify
parse
方法,所以OP确实需要使用JSON2库。您的答案与IE8及更高版本相关。我在IE中多次通过操作兼容性设置修复了此类JSON和其他js错误,包括删除站点frim兼容性列表或禁用标准Microsoft列表和intranet复选框。这句话很有道理,不要犹豫改进它,并投票支持iTelagant和简单的解决方案,+1“怪癖”模式?!你能解释一下吗?