ajaxコールは、成功の代わりにエラーが発生します
-
28-10-2019 - |
質問
私のASP.NET MVC3プロジェクトでは、AJAXコールを使用して、JSONデータをコントローラー会社のActionMethodの作成に送信します。しかし、AJAXコールをデバッグすると、成功結果の代わりに常にエラー結果になります。
ajaxコール:
$.ajax({
url: '/Company/Create',
type: 'POST',
data: JSON.stringify(CreateCompany),
dataType: 'Json',
contentType: 'application/json; charset=utf-8',
success: function () {
alert('ajax call successful');
},
error: function () {
alert('ajax call not successful');
}
});
会社のコントローラーでの私のアクション方法:
[HttpPost]
public ActionResult Create (Company company)
{
try
{
//Create company
CompanyRepo.Create(company);
return null;
}
catch
{
return View("Error");
}
}
私はすでにActionMethodをデバッグしましたが、彼は彼がすべきようにそれを完了します。したがって、AJAXコールで送信されるデータは、DBに処理され、書き込まれます。 (アクションメソッドはキャッチパーツを使用しません)。
Ajaxの呼び出しは、なぜ「Ajax Callは成功しない」というメッセージを伝えているのですか?
解決
以前は、JSONの結果を取り戻すことに同じ問題を抱えていました。私がしたことは、データ型を「テキストJSON」に設定することです:))これがあなたのエラーの詳細を取得して追加情報を取得しようとするのに役立つ場合、つまり:
$.ajax({
url: '/Company/Create',
type: 'POST',
data: JSON.stringify(CreateCompany),
dataType: 'text json',
contentType: 'application/json; charset=utf-8',
success: function () {
alert('ajax call successful');
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert("XMLHttpRequest=" + XMLHttpRequest.responseText + "\ntextStatus=" + textStatus + "\nerrorThrown=" + errorThrown);
}
});
ところで:私はこの解決策をStackoverflowのどこかに見つけました
他のヒント
なぜあなたは戻ってきますか null
コントローラーアクションで成功した場合は?たとえば、JSONオブジェクトのような成功に何かを返します(特に、サーバーからのJSON応答が予想されることをAJAXリクエストで示したように - dataType: 'json'
設定 - 小文字である必要があります j
ところで):
return Json(new { success = true });
これは簡単ではないでしょう:
$.post("/Company/Create", function (d) {
if (d.Success) {
alert("Yay!");
} else {
alert("Aww...");
}
}, "json");
そして、あなたのコントローラーで。
[HttpPost]
public JsonResult Create(
[Bind(...)] Company Company) { <- Should be binding
if (this.ModelState.IsValid) { <- Should be checking the model state if its valid
CompanyRepo.Create(Company);
return this.Json(new {
Success = true
});
};
return this.Json(new {
Success = false
});
}
所属していません StackOverflow