Есть много вещей, которые могут пойти не так. Вы уверены, что запрос AJAX успешно возвращен? Я бы предложил перейти на
$.ajax({
type: 'POST',
url: 'blah.php',
data: $('#msgform').serialize(),
success: function (data, textStatus) {
alert(data, textStatus);
$('#msgresults').append(data);
},
error: function(xhr, status, e) {
alert(status, e);
}
});
Это поможет вам отладить ajax-часть вашего кода. $ .post не обрабатывает ошибки, поэтому (на мой взгляд) это почти никогда не хорошая идея, потому что вы всегда можете иметь сетевые ошибки, которые требуют обработки. С более новым jQuery у вас все еще есть метод .error () на xhr, поэтому я полагаю, что это альтернатива.