все равно не понял, как ты выполняешь скрипт, при чем тут eval...
если передается скрипт и разметка, может лучше засунуть их в разные ключи массива и передать в JSON, чтобы скрипт был отдельно от разметки
такое решение работает в safari (без ajax, вряд ли он связан с проблемой):
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html lang="en">
<head>
<title>title</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
<script type="text/javascript">
var head = document.getElementsByTagName('head')[0];
var script = document.createElement('script');
script.type = 'text/javascript'
script.appendChild( document.createTextNode( 'alert(1);' ) );
head.insertBefore( script, head.firstChild );
head.removeChild( script );
</script>
</body>
</html>