kykyryky
@kykyryky

Почему не загружается view после POST-запроса?

Есть контроллер:
public class HomeController : Controller
    {
        public ActionResult Index()
        {
            return View("Index");
        }
        public ActionResult PostInformation()
        {
            ViewBag.Text = Request["message"];
            return View("Result");
        }
    }

Сначала загружается Index. В нем есть кнопка, по клику выполняется скрипт:
function PostRequest() {
    var xhttp = new XMLHttpRequest();
    xhttp.open('POST', '/Home/PostInformation', true); 
    xhttp.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
    xhttp.send("message=123123");
}


Запрос проходит нормально и в ViewBag.Text лежит "123123". Дальше по идее должна загрузиться вьюшка Result, но ничего не происходит, хотя если шагать отладчиком, то он заходит и в Result тоже.
Что я делаю не так, и как мне загрузить Result сразу после выполнения запроса?
  • Вопрос задан
  • 419 просмотров
Решения вопроса 1
Странно отдавать и для обычного запроса и ajax полную хтмл разметку, во втором случае нужно скорее всего отдавать что-то другое, в любом случае на клиенте нет обработки ответа от сервера.
Если хочется отдавать полную разметку с блокирующим запросом , то подойдет обычная form with method=post
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@dmitryKovalskiy
программист средней руки
Ткните пальцем в строчку кода, которая обрабатывает результат AJAX-запроса ? Вы ткнули контроллер - он вернул ответ. Вопрос - куда вы дели ответ?
Ответ написан
yarosroman
@yarosroman Куратор тега C#
C# the best
Допишите после send
if (xhttp.status != 200) {
// обработать ошибку
alert( xhttp.status + ': ' + xhttp.statusText ); // пример вывода: 404: Not Found
} else {
// вывести результат
alert( xhttp.responseText ); // responseText -- текст ответа.
}

и поставьте атрибут [HttpPost] методу PostInformation
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы