2013-10-25 62 views
0

我正在研究ASP.net MVC 2.0應用程序。我正在使用Ajax表單。在那裏我有一個下拉和一個按鈕。Ajax的奇怪行爲

點擊按鈕後,如果Ajax請求成功,我想重新加載下拉菜單。

因此,我在Ajax窗體的回調函數內部調用了一個jQuery Ajax函數。

在這個jQuery的Ajax函數中,我正在編寫代碼來獲取新的數據和綁定以便下載,以便它將被重新加載新數據。

在這裏,每件事情都是第一次正常工作。但是,當我點擊下一次的按鈕時,Ajax jquery函數被調用,但它不會觸及控制器操作方法。

代碼:

這裏,是我的jQuery函數:

<script type="text/javascript"> 
     function GetData() { 
      $.getJSON("/Home/GetUsers", null, function (data) { 
       var selectList = $("#ddlUsers"); 
       selectList.empty(); 
       alert("Inside Get Json method of jquery Ajax"); 
       var defaultoption = $('<option>').text("--Select--").val(""); 
       selectList.append(defaultoption); 
       $.each(data, function (index, optionData) { 
        var option = $('<option>').text(optionData.Text).val(optionData.Value); 
        alert(option); 
        selectList.append(option); 

       }); 
      }); 
     } 
     function Callback() { 
      GetData(); 
      alert("Sucessfully done"); 
     } 
     function Failed() { 
      alert("Sorry, an error occured while processing your request"); 
     } 

方法中位指示:

[HttpGet] 
    public JsonResult GetUsers() ----> Method that is called from GetData() Ajax call 
    { 
     var data = GetUsersList(); 
     return Json(data, JsonRequestBehavior.AllowGet); 
    } 

public SelectList GetUsersList() 
{ 
    Db Fectch 

    return data; 
} 

我無法理解爲什麼上面所指出的方法不要求第二但是GetData()被調用。

請幫助..

+1

瀏覽器是否可以緩存ajax調用,而不是從服務器調用它? –

+0

@whoshotjr ..確實+1您的評論。它真的是因爲瀏覽器緩存..它不是調用服務器..謝謝 –

回答

1

我認爲這是高速緩存,試試你的控制器方法之前加入這一行:

[OutputCache(NoStore = true, Duration = 0, VaryByParam = "*")] 

你也可以把這個線在控制器的頂部,如果你想它適用於所有方法。

+1

@ ChtiWi..Superb工作很好..我有本打破我的頭一個小時。你在一分鐘內解決了它..謝謝了很多.. –