2017-04-11 114 views
1

好的,我有一點麻煩,我以前沒有見過,它實際上不可重現。我有一個文本框,它接受一個數字,然後是一個按鈕,按下時會執行ajax調用。這在我的控制器中調用一個動作,然後用文本框中的值更新數據庫。問題是調試時有時會起作用,而其他時間則不起作用。您可以在控制器中的操作中放置一箇中斷點,但它並不總是被打中,但即使未調用該操作,仍會執行來自ajax的成功調用。通常它在調試器啓動後的前幾次都會運行,但是它會停止,刷新頁面並不重要。我在Chrome或Visual Studios中看不到任何錯誤。我也試着看看我能否在Intellitrace中找到某些東西,但沒有運氣。AJAX並不總是調用控制器的動作,但總是處理成功

這是我的行動:

[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" /> 

阿賈克斯:

$("#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

需要在設置'contentType:'application/json時對數據進行串聯化處理。 charset = utf-8'',否則jQuery將uri編碼它 – charlietfl

+0

沒有運氣。但其他阿賈克斯調用正常工作,並沒有這個問題。 –

+0

聽起來像你的AJAX正在緩存。嘗試在''.ajax'調用中添加'cache:false'選項。 –

回答

1

如果您在IE中工作,請關閉緩存。 Chrome似乎並不需要它。

$.ajax({ 
     cache:false, 
相關問題