2015-01-14 3 views
0

Моего сигнала() не отображается после отправки ...MVC Ajax оповещение не работает должным образом

Когда я представить мою форму, я вижу, данные размещены, и все выглядит хорошо, но тревога («КИ») ; из ajax не отображается. что мне не хватает?

@model Mvc5.Models.Test 

@using (Html.BeginForm()) 
{ 

     @Html.AntiForgeryToken() 
     @Html.ValidationSummary(true) 


     @Html.TextBoxFor(model => model.Name) 
    <input type="submit" value="Add" class="btn btn-default" id="idForm" /> 

} 

<div id="target"> 
@Html.Action("ShowList", "Test") 
</div> 

<script> 
    $(document).ready(function() { 
     // this is the id of the form 
     $("#idForm").submit(function() { 

      var url = "Test/Create"; // the script where you handle the form input. 

      $.ajax({ 
       type: "POST", 
       url: url, 
       data: $("#idForm").serialize(), // serializes the form's elements. 
       success: function (data) { 
       alert('ok');     
       } 
      }); 

      return false; // avoid to execute the actual submit of the form. 
     }); 

    }); 
</script> 
+0

Вы проверили статус .. ?? – Outlooker

+0

Возможно, вы не вернете объект с собственностью «успех» из вашего действия? Вы пытались отладить успешный js-обработчик? – idlerboris

+0

@ user1929393 проверить консоль разработчика вашего браузера на сообщение об ошибке, а также проверить статус запроса POST на «Test/Create» – Aminul

ответ

0

Вы должны проверить форму прежде, чем представить регулятор ниже кода

$("#myForm").submit(function (e) { 
       e.preventDefault(); 
      }); 
      $("input#submitForm").click(function() { 
       if ($('#myForm').valid()) { 
        $.ajax({ 
         type: "POST", 
         url: "/controllerName/ActionName", 
         data: $("#myForm").serialize(), 
         success: function (result) { 
          alert('sucess'); 
         } 
        }); 

       } return false; 
      }); 

и не забудьте включить сценарии проверки

src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"> 
src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"> 

возвращающих Также JSON из контроллера

public ActionResult ActionName() 
{ 
    return Json(new { success = true }, JsonRequestBehavior.AllowGet); 
} 

Надеюсь, это будет полезно для вас.

+0

что это? Это идентификатор кнопки отправки? input # submitForm Кроме того, вам не нужен способ обработки json, если вы возвращаете json? Я пробовал это, но когда я отправляю сообщение, страница просто показывает результат json, а остальная страница не загружается. – user1929393

0

Добавить ошибку, как показано ниже, и посмотреть, какое предупреждающее сообщение отображается. Вы также можете добавить инструмент отладчика и разработчика, чтобы отлаживать его.

$.ajax({ 
    type: "POST", 
    url: url, 
    data: $("#idForm").serialize(), // serializes the form's elements. 
    success: function (result, status) { 
    if (status == 'success') { 
     if (result.success) { 
     OnSuccessActions(); 
     } else { 
     $('.ValidationSummary').html(result.Error); 
     } 
    } 
    }, 
    error: function() { 
    alert('error!'); 
    } 
}); 
0

Ваш успех func будет запущен, если ваш запрос ajax получит код состояния 200 из вашего api. Я бы дважды проверял, чтобы это произошло.

Редактировать.

Вы также должны запретить форме выполнять обратный вызов сервера, так как вы делаете вызов ajax.

$("#idForm").submit(function (e) { 
     e.preventDefault(); 

     var url = "Test/Create"; // the script where you handle the form input. 
Смежные вопросы