好的,我是JSON的新手所以请原谅我,如果我的问题有点无知 - 我已经太过头了,我需要一些专家建议.
我正在尝试使用一个简单的示例,其中HTML页面使用jQuery的JSON/AJAX函数调用示例PHP页面,该页面传回一个简单的JSON数据结构,然后该页面使用jQuery编写其中一个元素页面的数据结构.在FF工作.在IE7中不起作用arrrggghhhh!
HTML代码(相关部分):
PHP代码(test-ajax.php):
array('value1a', 'value1b', 'value1c'), 'var2' => array('value2a', 'value2b', 'value2c')); header("Content-type: text/plain"); echo json_encode($output); ?>
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"]}
这似乎是一个有效的JSON结构.在我的JavaScript中,我试图'value1b'
通过这样做来引用:json.var1[1]
.FF处理这个很好.IE7说这是未定义的.
我究竟做错了什么?如何转移像这样的二维数组
array('var1' => array('value1a', 'value1b', 'value1c'), 'var2' => array('value2a', 'value2b', 'value2c'));
在JSON/AJAX?或者这不可能吗?
好吧,想通了.根本不是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.
感谢大家!