2014-10-17 43 views
0

我在我的javascript中有一個ajax調用,它返回並將一個局部視圖加載到一個div中。此功能用於工作,但突然停止。我不認爲我改變了任何代碼或任何會導致問題的事情,但顯然有些事情正在發生。 Ajax調用將在您第一次單擊所調用的按鈕時工作,但在您重新加載頁面之前不會再次調用。我試着添加更多的參數並移動javascript,但它仍然無法正常工作。這有可能發生嗎?AJAX GET調用將在第一次調用但不會在其他點擊後工作

我曾嘗試將onOpen事件移出javascript,同樣的事情仍然發生。我還發出了一個警報呼叫,以確保它正在進入成功呼叫並且呼叫警報。我還安裝了fiddler來檢查通話,除非第一次點擊按鈕,否則通話不會進行。這是一個非常令人沮喪的錯誤,非常感謝所有幫助。

這裏是我的javascript:

@section scripts 
{ 
    <script type="text/javascript"> 
     $(document).ready(function() { 
      $("#assets-button").on("click", function() 
      { 
       $('#assets-container').bPopup(
       { 
        modal: true, 
        onOpen: function() { 
         $.ajax({ 
          type: 'GET', 
          url: '@Url.Action("EmployeeAssets", "Employee",new { id = Model.ID, empNo = Model.EmployeeNumber, username = Model.UserName })', 
          success: function (data) { 
           $('#assets-container').html(data); 
          } 
         }); 
        }, 
        onClose: function() { 
         var f = $('#assets-container').children('form'); 
         var serializedForm = f.serialize(); 
         var action = '@Url.Action("EmployeeAssets","Employee",new {empNo = Model.EmployeeNumber})'; 
         $.post(action, serializedForm); 
        } 
       }); 
      }); 
     }); 
    </script> 
} 

這裏是我試圖調用操作:

[HttpGet] 
public ActionResult EmployeeAssets(int id, int empNo, string username = null) 
{ 
    var assets = _employeeDb.EmployeeAssets.FirstOrDefault(e => e.EmpNo == empNo); 
    if (assets == null) 
    { 
     var firstOrDefault = _employeeDb.EmployeeMasters.FirstOrDefault(e => e.EmployeeNumber == empNo); 
     if (firstOrDefault != null) 
     { 
      username = firstOrDefault.UserName; 
     } 
     var newasset = new EmployeeAsset() 
     { 
      EmpNo = empNo, 
      UserName = username 

     }; 
     _employeeDb.EmployeeAssets.Add(newasset); 
     _employeeDb.SaveChanges(); 
     assets = newasset; 
    } 
    return PartialView(assets); 
} 
+0

「it stopped [working]」 - 這是什麼意思?如果您在'success'處理程序中看到'alert',代碼就會到達那裏。在這種情況下,「數據」是什麼?很明顯,你有另一個'EmployeeAssets'操作標有'[HttpPost]'而沒有'id'參數,對嗎? – Igor 2014-10-17 01:17:28

+1

你還沒有發佈你的HTML,但'#assets-button'是'#assets-container'的子元素嗎? (在這種情況下,您用新的#資產按鈕替換原始的#資產按鈕) – 2014-10-17 02:14:27

回答

1

您可以嘗試使用的設置緩存屬性對象要傳遞到AJAX呼叫。根據jQuery documentation for .ajax緩存的默認值設置爲true,所以我想知道在第一個請求後,您的瀏覽器是否正在訪問結果的緩存副本。看起來你也可以設置dataType,並且將默認緩存恢復爲false。

此外,我建議把你的警報放在onOpen事件處理程序中,除了成功處理程序,以確保它也被調用。所以這可能會幫助您進一步調試。

相關問題