My JavaScript sometimes crashes on this line:
var json = eval(\'(\' + this.responseText + \')\');
Crashes are caused when the argument of <
If you include the JSON parser from json.org, you can use its parse() function and just wrap it in a try/catch, like so:
try { var json = JSON.parse(this.responseText); } catch(e) { alert('invalid json'); }
Something like that would probably do what you want.