Ошибка "doc.head is null" возникает потому, что при полной замене содержимого страницы HTML с помощью команды $('html').html(result.code); весь предыдущий HTML контент удаляется, включая head элемент, и при попытке обращения к нему возникает ошибка.
Для обработки ошибки "Uncaught TypeError: can't access property 'appendChild', doc.head is null" можно добавить условие проверки наличия head элемента перед выполнением дальнейших действий. Например:
```javascript
success: function(result) {
if (result.code.includes('<head>')) {
$('html').html(result.code);
} else {
$('body').html(result.code);
}
}
```
Таким образом, если head элемент отсутствует в возвращаемом HTML коде, мы заменяем только содержимое body, избегая ошибки.
Другой способ избежать ошибки - это заворачивать HTML контент в div или другой контейнер, и заменять только содержимое этого контейнера, а не всей страницы. Например:
```javascript
success: function(result) {
$('#content').html(result.code);
}
```
HTML:
```html
<div id="content">
<!-- Здесь будет обновляемый контент -->
</div>
```
Таким образом, мы избегаем замены head элемента и других необходимых элементов страницы.
Или можно также воспользоваться функцией load() для загрузки контента страницы AJAX-запросом, которая автоматически обновит страницу без удаления head и других важных элементов:
```javascript
$('#content').load('newPage.html #content');
```
Выбор способа зависит от конкретной потребности и структуры вашего проекта.