Попробуйте заменить
document.getElementById('img').appendChild(xmlhttp.responseText);
с
document.getElementById('img').innerHTML = xmlhttp.responseText;
Или, если вам нужно продолжить использовать .appendChild (), попробуйте заменить
document.getElementById('img').appendChild(xmlhttp.responseText);
с
var o = document.createElement('img');
o.src = xmlhttp.responseText;
document.getElementById('img').appendChild(o);
и замена
echo '<img src="data:image/jpg;base64,'.$img_str.'" />';
с
echo 'data:image/jpg;base64,'.$img_str;