2013-10-25 2 views
0

Я работаю над ASP.net MVC 2.0 Application. Я использую форму Ajax. У меня есть выпадающий список и кнопка.Странное поведение с Ajax

После нажатия кнопки, я хотел перезагрузить выпадающий список, если запрос Ajax является успешным.

Итак, я вызываю функцию jquery Ajax внутри функции обратного вызова формы Ajax.

В этой функции jquery Ajax я пишу код, чтобы получить новые данные и привязку, чтобы они упали, чтобы они перезагружались новыми данными.

Здесь все отлично работает в первый раз. Но, когда я нажимаю кнопку в следующий раз, вызывается функция jquery Ajax, но она не ударяет по методу действия contoller.

Код:

Здесь мои 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 Отлично работает. У меня есть benn, разбивающий голову на час. Ты решил это через минуту ... Спасибо большое .. –

Смежные вопросы