好吧,我遇到了一些我以前从未见过的麻烦,它实际上并不可重现。我有一个文本框,它接受一个数字,然后按下按钮时执行ajax调用。这会在我的控制器中调用一个操作,然后使用文本框中的值更新数据库。问题是,虽然调试有时它可以工作,但有时它没有。您可以在控制器中的操作中放置一个断点,并且它不会被命中,但即使没有调用该操作,仍然会执行来自ajax的成功调用。通常它在调试器启动后的前几次工作但然后停止,如果刷新页面则无关紧要。我在Chrome或Visual Studios中看不到任何错误。我也试着看看我是否能在Intellitrace中找到一些东西,但没有运气。
这是我的行动:
[HttpPost]
public JsonResult UpdateIncremental(int QueryID, int? Incremental)
{
Datamart_MedsDBContext DBContext = new Datamart_MedsDBContext();
ss_Queries query = DBContext.ss_Queries.FirstOrDefault(m => m.QueryID == QueryID);
query.IncrementalLookBack = Incremental;
query.UpdatedBy = "CHMCCORP\\" + Session["UserName"].ToString();
query.UpdatedOn = System.DateTime.Now;
DBContext.ss_Queries.Attach(query);
DBContext.Entry(query).State = System.Data.Entity.EntityState.Modified;
DBContext.SaveChanges();
return Json(true, JsonRequestBehavior.AllowGet);
}
查看:
<input type="text" id="Incremental" value="@ViewBag.Incremental" />
<input id="editIncremental" type="button" name="editIncremental" value="Update" />
的Ajax:
$("#editIncremental").on("click", function () {
var reg = /(^$)|(^[0-9]*$)/;
var incremental = $('#Incremental').val();
var valid = reg.test(incremental);
var queryID = "@Session["QueryID"]";
if (!valid) {
alert("The incremental load must be a number!");
} else {
$.ajax({
type: "POST",
url: '@Url.Action("UpdateIncremental", "Home")',
data: {
QueryID: queryID, Incremental: incremental
},
dataType: 'json',
contentType: 'application/json; charset=utf-8',
success: function (data) {
if (data == true) {
alert('Incremental Lookback has been updated!')
//window.location.reload();
}
else {
alert('There is some error');
}
}
});
}
});
我知道这会很痛苦,因为它不可重复且无法保证。我只想找到正确方向的一点。
答案 0 :(得分:2)
如果您在IE中工作,请关闭缓存。 Chrome似乎不需要它。
$.ajax({
cache:false,