Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/468.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
Php JSON结构在IE7中不起作用(JavaScript)_Php_Javascript_Json_Internet Explorer 7 - Fatal编程技术网

Php JSON结构在IE7中不起作用(JavaScript)

Php JSON结构在IE7中不起作用(JavaScript),php,javascript,json,internet-explorer-7,Php,Javascript,Json,Internet Explorer 7,好的,我是JSON新手,所以如果我的问题有点无知,请原谅我——我太过头痛,需要一些专家建议 我试图得到一个简单的示例,其中一个HTML页面使用jQuery的JSON/AJAX函数调用一个示例PHP页面,该页面传回一个简单的JSON数据结构,然后该页面使用jQuery将数据结构中的一个元素写入页面。在FF工作。在IE7中不起作用 HTML代码(相关部分): 这似乎是一个有效的JSON结构。在我的JavaScript中,我试图通过这样做引用'value1b':json.var1[1]。FF处理得很好

好的,我是JSON新手,所以如果我的问题有点无知,请原谅我——我太过头痛,需要一些专家建议

我试图得到一个简单的示例,其中一个HTML页面使用jQuery的JSON/AJAX函数调用一个示例PHP页面,该页面传回一个简单的JSON数据结构,然后该页面使用jQuery将数据结构中的一个元素写入页面。在FF工作。在IE7中不起作用

HTML代码(相关部分):

这似乎是一个有效的JSON结构。在我的JavaScript中,我试图通过这样做引用
'value1b'
json.var1[1]
。FF处理得很好。IE7说这是未定义的

我做错了什么?我如何像这样传输二维阵列

array('var1' => array('value1a', 'value1b', 'value1c'), 
      'var2' => array('value2a', 'value2b', 'value2c'));

通过JSON/AJAX?或者这是不可能的?

尝试将以下行添加到test-ajax.php文件的末尾:

echo ';';

我没有立即发现任何错误,但这里有一些东西可以尝试

  • 得到。查看来自getJSON()调用的请求/响应。内容是否按预期返回?响应的状态代码是200,还是其他
  • 确定IE是否知道json变量。修改你的代码来尝试这样的东西
  • (可能希望一次只运行一个警报)


    如果您尝试这样访问值,是否会得到相同的结果

    json["var1"][1]
    
    。。。与此相反:

    json.var1[1]
    

    好吧,算了。根本不是JSON/JavaScript问题,而是缓存问题。当我开发这个时,我必须在test-ajax.php不起作用或生成不同的JSON结构时测试IE7,然后我将test-ajax.php更改为上面发布的内容,并更新了JavaScript,但IE7使用的是它最初从test-ajax.php收到的缓存版本。我对此进行了测试——如果我清除了IE7中的缓存,它就会工作,然后如果我更改JSON结构中的值(但不是结构本身),IE7将继续使用缓存的JSON结构

    解决方案:

    我补充说

    header("Cache-Control: no-cache, must-revalidate");
    header("Expires: 0"); 
    
    在我的test-ajax.php页面中,现在IE7在发出ajax调用时,正在正确地检查服务器是否有更新版本的test-ajax.php


    谢谢大家

    我在为对象文字属性使用保留字时遇到了问题。它在Firefox和Safari中运行良好,但在IE中却有炸弹。下面是一个经常让我绊倒的问题:

    {
        class : 'my-css-class'
    }
    

    这是我首先要检查的。YMMV.

    IE和ajax的两个常见问题如下:

    • 缓存(可以在上面找到解决方案)
    • 空白!!(如果您的返回在json输出之前/之后有任何空格,则在IE 7中会失败)

      • 我在IE 8上也有同样的问题。解决方案是简单地使用ajaxSetup关闭缓存

        $.ajaxSetup({
        cache : false});
        

        非常烦人,因为它在FF和Chrome中工作良好

        在IE中,您必须包含json2.js库,因为IE没有本机JSON解析。但是Firefox和Chrome已经做到了。

        这绝对是可能的。我刚刚在IE7中测试了JSON字符串,它运行良好,我成功地找到了JSON.var1[1]的值。问题一定在别处,你能发布你的getJSON函数吗?getJSON来自jQuery库。是的-我的错-是缓存问题-见我的答案。谢谢我试过了,但没用。我更改了echo json_encode($output);回显json_encode($output);它在FF和IE中打破了它:)啊,Internet Explorer AJAX缓存。我猜几乎每个web开发人员都会遇到这种情况。我本以为会有一个堆垛溢出的问题和答案,关于这一点的投票数不胜数,但我没有找到一个。
        json.var1[1]
        
        header("Cache-Control: no-cache, must-revalidate");
        header("Expires: 0"); 
        
        {
            class : 'my-css-class'
        }
        
        $.ajaxSetup({
        cache : false});