2017-02-07 3 views
0

В настоящее время я работаю над новыми функциями для проекта, над которым я работаю, где пользователь может добавить одну или несколько записей одновременно. Этапы заключаются в следующем:Div не загружается с помощью нового PartialView из ajax-вызова

  1. Нажмите Добавить годовой отчет (ы).
  2. Модальное окно Telerik всплывает с выпадающим списком статусов.
  3. Выберите статус «Фактическое» и появится «Датчик даты» (также Telerik).
  4. Если вы выбрали «Проецируемый», для даты начала появится «Дата выбора», а также выпадающий список для выбора «Год окончания» («Проецировано» может работать несколько лет).
  5. Как только поле даты будет заполнено для любого выбора, нажмите кнопку «Добавить».
  6. При нажатии кнопки «Добавить» запускается метод ajax, который попадает на сервер, который создает список новых Годовых отчетов и отправляет их объекту Session. Затем он возвращается, если все будет успешным.
  7. В случае успеха отобразите текст с сообщением об успешном завершении, затем закройте окно и обновите div, содержащий список Годовых отчетов, с новыми.

Это все работает до сих пор, однако есть проблема. Как и когда вы запускаете это несколько раз, div, содержащий все ошибки Годовых отчетов, под которыми я подразумеваю, никогда не обновляется после первого раза, или использует предыдущие данные. Он не обновится. Я отключил кеширование на своих вызовах ajax, удалил предупреждения, удалил экземпляры setTimeout, удалил div и добавил его обратно и т. Д. Ничто из этого не обновляет div.

Однако, если я включаю IE Developer Tools, он работает. Я читал, что IE известен тем, что использует кеширование, что иногда бывает хорошо, но в этом случае это не так.

Есть ли способ отключить кеширование и принудительно перезагрузить div?

Ниже приведен мой код для чего происходит.

AddARPartialView.cshtml:

$(document).ready(function() { 
    $("#btnAdd").click(function (e) { 
     //Stop system from proceeding to server immediately 
     e.preventDefault(); 

     //Used for checking Completion 
     var success = false; 

     //Show spinner while system processes page 
     //ShowProgress(); 

     //Check to see if there was any validation errors 
     ShowValidationErrors(); 

     //There was an error, so do nothing 
     if (hasError) { 
      //hideprogessbar(); 
      return false; 
     } 

     //Save Message 
     $.ajax({ 
      type: "POST", 
      cache: "false", 
      url: "/PM/AddARPartialView", 
      dataType: "json", 
      data: $('form').serialize(), 
      success: function (result) { 
       if (result.success) { 
        //Mark Success as true 
        success = true; 

        //Hide the Progress bar and show the success message 
        //hideprogessbar(); 
       } 
       else { 
        //Mark Success as false 
        success = false; 

        //hideprogessbar(); 
        var DetailError = 'Error while creating new Annual Reports. Please contact administrator with below details.' 
         + '\n' + '\n' + result.Error; 
        $("#lblError").show(); 
        $("#lblError").text(DetailError); 
       } 
      }, 
      error: function (xhtr, e, e2) { 
       alert(e + '\n' + xhtr.responseText, 'error', ''); 
      }, 
      complete: function() { 
       if (success) 
       { 
        CloseARModal(); 
        UpdateAnnualReports(); 
       } 
      } 
     }); 
    }); 
}); 

Обычная страница:

function CloseARModal() { 
    var arWindow = $("#AnnualReport").data("tWindow"); 
    arWindow.close(); 
} 

function UpdateAnnualReports() { 
    //Show spinner while system processes page 
    //ShowProgress(); 

    $.ajax({ 
     type: "GET", 
     cache: "false", 
     url: "/PM/ARPartialView", 
     success: function (result) { 
      $("#divARe").html(result); 
     }, 
     error: function (xhtr, e, e2) { 
      if (xhtr.status === 401) 
       alert("Session Timeout or Unauthorized to access this webpage"); 
      else 
       alert(e + '\n' + xhtr.responseText); 
     } 
    }); 

    //hideprogessbar(); 
    //alert("New Annual Report(s) added successfully!"); 
} 

ответ

0

Так мое лицо уверен красный от смущения. Я понял вопрос. Если вы рассмотрите вызовы Ajax, вы заметите, что для кеша я устанавливаю значение «false». Он не должен иметь кавычек вокруг него и вместо этого просто быть ложным.

Я отметил это в чьем-либо звонке Аякса и попробовал его на своем. Разумеется, проблема кэширования ушла мгновенно, lol ...

Так бесит, что несколько дней исследований, проб и ошибок и просто ударились головой о стол, впустую из-за того, что у меня был плохой пример от предыдущего подрядчика. Я всегда должен помнить, если это выглядит странно, задайте вопрос, lol.