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

Bil*_*ill 2 javascript php json internet-explorer-7

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

我正在尝试使用一个简单的示例,其中HTML页面使用jQuery的JSON/AJAX函数调用示例PHP页面,该页面传回一个简单的JSON数据结构,然后该页面使用jQuery编写其中一个元素页面的数据结构.在FF工作.在IE7中不起作用arrrggghhhh!

HTML代码(相关部分):

<script language="javascript" type="text/javascript" src="jquery.js"></script>
<script language="javascript" type="text/javascript">
function testAJAX() {
  $.getJSON("test-ajax.php", function(json){
      $("#div1").html(json.var1[1]);
  });
}
</script>
</head>
<body>
<input type="button" value="test ajax" onclick="testAJAX();" />
<div id="div1"> </div>
</body>
Run Code Online (Sandbox Code Playgroud)

PHP代码(test-ajax.php):

<?php
include_once('./json.php'); 
$output = array('var1' => array('value1a', 'value1b', 'value1c'), 
                'var2' => array('value2a', 'value2b', 'value2c')); 

header("Content-type: text/plain");
echo json_encode($output);
?>
Run Code Online (Sandbox Code Playgroud)

json.php有我正在使用的json_encode()函数 - 我是从http://us2.php.net/manual/en/function.json-encode.php得到的.我正在使用它,因为我没有PHP5,我的系统管理员不会安装任何支持.只需在浏览器中直接查看test-ajax.php即可打印出如下所示的序列化JSON结构:

{"var1":["value1a","value1b","value1c"],"var2":["value2a","value2b","value2c"]}
Run Code Online (Sandbox Code Playgroud)

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

我究竟做错了什么?如何转移像这样的二维数组

array('var1' => array('value1a', 'value1b', 'value1c'), 
      'var2' => array('value2a', 'value2b', 'value2c'));
Run Code Online (Sandbox Code Playgroud)

在JSON/AJAX?或者这不可能吗?

Bil*_*ill 7

好吧,想通了.根本不是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"); 
Run Code Online (Sandbox Code Playgroud)

在我的test-ajax.php页面中,现在IE7在进行AJAX调用时正在检查服务器是否有更新版本的test-ajax.php.

感谢大家!