私は、Webアプリケーション、ASP.Net MVC 4.0 with entityframework 6.0で、ユーザー選択ごとにデータベースを更新しようとしています。データは、jQuery AJAXを使用してコントローラのアクションに送信されます。以下は、データベースを更新するエンティティを更新するC#コードです。jQuery AJAXは常にエラーが発生しています:{}
public void modidyProduct(Productdetail prodData)
{
try
{
using (SampleTrialEntities entity = new SampleTrialEntities())
{
var data = entity.Productdetails.Where(p=>p.ProductID == prodData.ProductID).FirstOrDefault<Productdetail>();
data.ProductName = prodData.ProductName;
data.ProductNumber = prodData.ProductNumber;
data.CategoryName = prodData.CategoryName;
data.ModelName = prodData.ModelName;
entity.Entry(data).State = System.Data.Entity.EntityState.Modified;
entity.SaveChanges();
}
}
catch (Exception)
{}
}
jQuery AJAXがそのコントローラアクションメソッドを呼び出します。
function updateProduct() {
var productData = {
ProductName: $('#prodName').val().trim(),
ProductNumber: $('#prodNum').val().trim(),
CategoryName: $('#ctgryName :selected').text(),
ModelName: $('#mdlName :selected').text(),
ProductID: atob($('#editProductId').val())
};
debugger;
$('#divLoader').show();
$.ajax({
url: '@Url.Action("modidyProduct", "Home")',
data: JSON.stringify(productData),
type: 'POST',
dataType: 'json',
contentType: 'application/json;charset=utf-8',
success: function (jqXHR) {
//Below line will destroy DataTable - tblProducts. So that we could bind table again. next line - loadData();
$('#tblProducts').DataTable().destroy();
$('#divLoader').hide();
loadData();
$('#addModal').modal('hide');
$('#editProductId').val('');
},
error: function (msg) {
debugger;
$('#editProductId').val('');
$('#divLoader').hide();
alert(msg);
alert("What's going wrong ?");
//alert(jqXHR.responseText);
}
});
}
jQueryのAJAXの方法&コントローラのアクションを実行した後、成功したデータベースのレコードを更新します。応答ステータスコード - 200 &ステータス - OKが返されます。しかし、エラーのみ:{}、AJAXメソッドで毎回コードブロックが実行されます。 Debugging screen capture with status-OK; statuscode - 200
@Shyjuさん、ありがとうございます。この詳細な説明は、私のような初心者には本当に役立ちます。あなたのコメントから、私はそれを推測しました - contentType: 'application/json; charset = utf-8'は、リクエストとして 'json'の形式でパラメータを受け取ることをサーバに知らせるために使用されます。 dataType: 'json'は' json'データをレスポンスとして解析するブラウザを用意します。 @Shyju - これを正式に要約するとコメント。 –
はい。サーバーはcontent Typeヘッダーを使用し、jqueryはdataTypeを使用して応答を処理します – Shyju