2017-08-15 14 views
0

I以下のAjaxリクエストがあります。ステータスコードは200、常にエラーであっても、MVCコントローラへのAjax POSTは、常にerroring

$.ajax({ 
    url: '/Projects/Index', 
    type: 'POST', 
    data: data, 
    dataType: 'json', 
    contentType: 'application/json; charset=utf-8', 
    error: xhr => { swal('From Error!', 'We\'ve saved your hours, thanks for your input!', 'success'); console.log(xhr) }, 
    success: result => swal('From Success!', 'We\'ve saved your hours, thanks for your input!', 'success') 
}); 

を。私のコントローラはdataを受け取り、のものをとし、View()を返します。ここで

はフルで私のコントローラのアクションです:

[HttpPost, ActionName("Index")] 
public ActionResult SetHours(HourPostRequest[] data) 
{ 
    foreach(var item in data) 
    { 
     var correctModel = item.ToEngineerHours(db); 
     db.EngineerHours.Add(correctModel); 
     db.SaveChanges(); 
    } 

    var eng = db.Engineers.FirstOrDefault(e => e.DomainUsername == User.Identity.Name).ID; 
    var test = db.EngineerHours.Where(e => e.EngineerID == eng).ToList(); 

    return View(test); 
} 

データは常にそのままに、上質受信とViewは常に返します。

@model IList<Timesheet.Models.EngineerHours>

私はクロームのDev-ツールネットワークビューに行ってきたとペイロードが正しいか、応答が200であると私は私のビューのモデルである返すためにランダムtestコレクションに追加しましたコントローラはデータを受信し、Viewを返します。

これは、私のSweetAlert2アラートは、成功ステータスに関係なく常にエラーが発生していることを意味します。

これはなぜ起こっているのでしょうか?

答えて

1

View()は、最終日にHTML文字列を返します。しかし、あなたのリクエストで次のように指定します。JSON形式の文字列として応答を期待するのjQueryを伝え

dataType: 'json' 

を。 jQueryはHTMLを見て、それを有効なjsonと認識できないため、エラーです。

+0

非常に高く評価されました! –

関連する問題