2016-09-12 3 views
-1

Я хочу отправить данные через Jquery Ajax в ASP.NET MVCмой JQuery Ajax не работает в ASP.NET MVC

Но, когда функция создания была вызвана Раздел Error Excuted

Здесь My Java Script

function create() { 
     $.ajax({ 
      url: "@Url.Action(actionName:"Create",controllerName:"Tag",routeValues:new { Area="Admin"})", 
      contentType: "application/json", 
      type: "POST", 
      dataType: "json", 
      data: $("#myForm").serialize(), 
      success: function (response) { 
       eval(response.Script); 
      }, error: function() { 
       alert("Error"); 
      } 
     }); 

Вот мой Действие Метод

[ValidateAntiForgeryToken,HttpPost, AjaxOnly] 
    public ActionResult Create(Tag tag) 
    {    
     JsonData data = new JsonData(); 
     if (ModelState.IsValid) 
     { 
      if (TagOperation.Where(x => x.Text == tag.Text) != null) 
      { 
       try 
       { 
        TagOperation.Add(tag); 
        data.Script = MessageBox.Show("Message", MessageType.Success).Script; 
        return RedirectToAction(actionName: "Index", controllerName: "Tag", routeValues: new { Area = "Admin" }); 
       } 
       catch (Exception ex) 
       { 
        data.Script = MessageBox.Show("Message", MessageType.Error).Script; 
        return Json(data); 
       } 
      } 
     } 
     data.Script = MessageBox.Show(ModelState.GetErrors(), MessageType.Warning).Script; 
     return Json(data); 
    } 

И вот я считаю, что Отправить Данные Via Jquery Ajax

@using (Html.BeginForm("Create", "Tag", FormMethod.Post, new { id = "myForm" })){ 
    @Html.AntiForgeryToken() 
<div class="form-horizontal">   
    @Html.ValidationSummary(true, "", new { @class = "text-danger" }) 
    <div class="form-group"> 
     @Html.LabelFor(model => model.Text, htmlAttributes: new { @class = "control-label col-md-2" }) 
     <div class="col-md-10"> 
      @Html.EditorFor(model => model.Text, new { htmlAttributes = new { @class = "form-control" } }) 
      @Html.ValidationMessageFor(model => model.Text, "", new { @class = "text-danger" }) 
     </div> 
    </div> 

    <div class="form-group"> 
     <div class="col-md-offset-2 col-md-10"> 
      <input onclick="create();" type="button" value="Save" class="btn btn-default" /> 
     </div> 
    </div> 
</div> 
} 
+0

Начать удаление 'contentType: "application/json", 'И если это не работает, объясните, какую ошибку вы получаете. У вас несколько ошибок. Ajax-вызовы не перенаправляются, поэтому 'return RedirectToAction()' бессмысленно. 'MessageBox.Show()' является WinForms, а не MVC –

+0

I Remove contentType, но он не работает, а я получаю код состояния 500, а заголовок ошибки - это поле формы анти-подделки ... I Put ValidateAntiForgeryToken And Html.AntiForgery In My Form.And MessageBox - это мой собственный класс для генерации JavaScript. – HashemMaya

+0

'500 (Internal Server Error)' означает, что ваш код контроллера выбрасывается и исключается. И что вы имеете в виду, что вы положили 'ValidateAntiForgeryToken' в форму? - это атрибут, применяемый к методу контроллера. –

ответ

0

Попробуйте добавить атрибут [HttpPost] для вашего действия методы результата (по умолчанию результатов действия использует GET)

[HttpPost] 
public ActionResult Create(Tag tag){..} 
+0

Я помещаю эти атрибуты ValidateAntiForgeryToken, HttpPost и не работает – HashemMaya

+0

Можете ли вы предоставить сообщение 500 (Internal Server Error), что код бросать? – Aldo

+0

Да Я получаю 500 код с сервера – HashemMaya

0

Вы можете Попробуйте добавить маркер в заголовок запроса.

var token = $('input[name="__RequestVerificationToken"]').val(); 

var headers = {}; 

headers['__RequestVerificationToken'] = token; 

$.ajax({ 
     headers: headers, 
}); 
+0

Не работает. Исключение было выбрано так же, как и раньше – HashemMaya

Смежные вопросы