JQuery не возвращает статус «Успешно», «Не удалось», «Завершено» - PullRequest
0 голосов
/ 08 июля 2011

Эксперты

Следующая функция успешно отправляет данные на Controller.cs (сервер)

 var ajaxResponse = $.ajax({
                        type: "post",
                        url: href,
                        dataType: 'json',
                        contentType: "application/json; charset=utf-8",
                        data: JSON.stringify(postData),
                        success: function (msg) {
                           alert("Success");
                        }
                    })

но я не могу получить обновленный статус из следующего метода

[AcceptVerbs(HttpVerbs.Post)]
        public ActionResult SaveData(TabMasterViewModel postData)
        {
            string message = "";
            try
            {
                TabMasterViewModel update = new TabMasterViewModel();
                update = _tabmasterService.GetSingle(r => r.colID == postData.colID);
                UpdateModel(update);
                _tabmasterService.Update(update);
                message = "Success";
            }
            catch (Exception e)
            {
                message = e.Message;
            }
            return Content(message);
        }

Я хотел бы отобразить сообщение в случае неудачи или успеха. эта следующая строка никогда не будет выполняться

success: function (msg) {
                           alert("Success");
                        }

но мой код на стороне сервера выполняется без ошибок.

Пожалуйста, предоставьте ваши ценные предложения,

Спасибо,
Imdadhusen

Ответы [ 4 ]

4 голосов
/ 08 июля 2011

Вместо возврата ActionResult вы должны возвращать JsonResult

Например

public JsonResult SaveData() {
  return Json(new {success=true, msg="Saved ok"});
}

, тогда ваш JS

success: function (msg) {
                            if(msg.success)
                               alert("Success");
                        }
1 голос
/ 08 июля 2011

Хит точку останова в Firebug в строке отправки сценария ajax.

Хит точку останова в Firebug при обратном вызове метода успеха.

Попасть в точку останова в Visual Studio по методу первой линии действия.

Выполните шаги, чтобы воспроизвести сценарий, и осмотрите объекты в Firebug перед отправкой запроса, продолжайте и нажмите F8, чтобы отправить запрос, проверьте вкладку Net в firebug и посмотрите, был ли какой-либо запрос отправлен нет.

Если оно было отправлено, проверьте отправленный запрос.

если до сих пор все в порядке, продолжайте процесс на стороне сервера в VS и проверьте, все ли правильно.

Затем проверьте ответ на Firebug и посмотрите, не идет ли что-нибудь не так.

1 голос
/ 08 июля 2011

Вы возвращаете Content результат, где, как в JQuery, вы упомянули dataType: 'json'.Я бы предложил вам либо вернуть результат JSON из вашего контроллера, либо удалить dataType из вызова jquery.Я не уверен в этом, пожалуйста, попробуйте.

0 голосов
/ 08 июля 2011

Прежде всего очевидная вещь: вы уверены, что ваш URL действителен? (Полагаю, это так, поскольку вы утверждаете, что данные отправлены успешно).

Вы пытались отслеживать запрос ajax, чтобы увидеть, какой http-статус вы получаете? В любом случае .ajax также имеет функцию обратного вызова с ошибкой, которую можно использовать в случае сбоя запроса все вместе.

Кстати: куда идет возврат от вас? Вы должны отправить ответ в выходной буфер, чтобы он достиг клиента. Простое возвращение отправит нулевой ответ клиенту (но это не должно иметь значения в этом случае, поскольку обратный вызов .ajax success должен сработать по запросу readyState 4 + status 200).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...