Для справки: проблема, как оказалось, была не в коде JavaScript. Вдохновленный вопросом (Энди Э) в комментариях, я узнал, как отлавливать ошибки JavaScript и определил, что json не был правильно заключен в круглые скобки или заканчивался символом ";".
Это была проблема с PHP. PHP имеет полезную функцию json_encode , которая преобразует объект PHP в json.
Однако, будучи новичком в json, я предположил, что он готов к употреблению. Мало ли я знал, что нужно было обернуть в несколько дополнительных символов. Я пересмотрел код, и теперь он работает как запланировано.
Ниже приведен код PHP, который другие могут найти полезным. Это php-файл, который я получаю через jquery $ .getJSON, как и в моем первом посте:
<?php
header('Content-Type: text/javascript; charset=utf8');
header('Access-Control-Allow-Origin: http://www.example.com/');
header('Access-Control-Max-Age: 3628800');
header('Access-Control-Allow-Methods: GET, POST, PUT, DELETE');
$file='rss.xml';
$arr = simplexml_load_file($file);//this creates an object from the xml file
$json= '('.json_encode($arr).');'; //must wrap in parens and end with semicolon
print_r($_GET['callback'].$json); //callback is prepended for json-p
?>