Хорошо, я новичок в JSON, поэтому, пожалуйста, прости меня, если мой вопрос немного неосведомлен - я слишком сильно ударился головой о стену и мне нужен совет специалиста.
Я пытаюсь получить простой пример работы, где HTML-страница использует JSON / AJAX-функции jQuery для вызова примера PHP-страницы, которая передает простую структуру данных JSON, а затем страница использует jQuery для написания одного из элементы из структуры данных на страницу. Работает в ФФ. Не работает в 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>
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);
?>
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]
. ФФ справляется с этим просто отлично. IE7 говорит, что не определено.
Что я делаю не так? Как мне передать 2-й массив, как это
array('var1' => array('value1a', 'value1b', 'value1c'),
'var2' => array('value2a', 'value2b', 'value2c'));
над JSON / AJAX? Или это невозможно?