Хорошо, я новичок в JSON, поэтому, пожалуйста, простите меня, если мой вопрос немного незначителен – я слишком сильно бил головой о стену и нуждался в советах экспертов.
Я пытаюсь получить простой пример работы, где HTML-страница использует функции JSON / AJAX jQuery для вызова на пример страницы 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>
PHP Code (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, и мои администраторы sys не будут устанавливать какую-либо поддержку для него. Просто просматривая test-ajax.php прямо в вашем браузере, печатает сериализованную структуру JSON следующим образом:
{"var1":["value1a","value1b","value1c"],"var2":["value2a","value2b","value2c"]}
который представляется действительной структурой JSON. В моем JavaScript я пытаюсь ссылаться на 'value1b'
, делая это: json.var1[1]
. FF отлично справляется с этим. IE7 говорит, что это не определено.
Что я делаю не так? Как взять перенос 2-мерного массива, подобного этому
array('var1' => array('value1a', 'value1b', 'value1c'), 'var2' => array('value2a', 'value2b', 'value2c'));
над JSON / AJAX? Или это невозможно?