проблема с Internet Explorer - PullRequest
       13

проблема с Internet Explorer

2 голосов
/ 14 апреля 2010

Моя проблема немного сложна: Я пишу на c #, asp.net и использую jquery

  1. У меня есть страница, которая отправляет запросы сервер, использующий ajax jquery способ.
  2. У меня есть файл Ashx (обработчик) для ответьте на этот запрос.
  3. Пользователь может выполнить несколько изменений несколько страниц, затем используйте какой-то метод это вызовет метод ajax.
  4. Мой файл Ashx читает некоторые значения из переменные и действия сеанса соответственно.

Это прекрасно работает во всех браузерах, кроме в Internet Explorer. В Internet Explorer сеанс, кажется, содержит старую информацию (старые идентификаторы пользователей). Это невероятно, один и тот же код отлично работает в Firefox, Chrome и Safari, но не работает с ie.

Что может быть причиной? Я понятия не имею, где вообще начать искать решение.

Кстати, извините за общее название, не могу понять, как объяснить это всего за несколько слов.

Вот код JQuery и Ashx:

JQuery

function SendRequstToServer(actionId, additional, callback) {
    if (actionId == "-1") {
        document.location = "default.aspx";
    }
    $.ajax({ url: "SmallRoutinesHandler.ashx", method: "GET",
    //asyn: false,
        data: "Action=" + actionId + additional,
        contentType: "string",
        error: function(xhr, status, errorThrown) {
            alert(errorThrown + '\n' + status + '\n' + xhr.statusText);
        },
        success: function(data) {
            alert(data);
            callback(data);
        }
    });
}

ASHx

context.Response.ContentType = "text/plain";
action = context.Request.QueryString["Action"];
switch ((ClientSideActionsRequest)Enum.Parse(typeof(ClientSideActionsRequest), action))
{
    case ClientSideActionsRequest.ShowProducts:
    long userId = WebCommon.CurrentlyWatchedUser.Id;
    List<UserItems> userItems = UserItems.GetByUserId(userId);
    string[] items = HtmlWrapper.WrapAsItems(userItems);
    if (items.Length > 0)
    {
         context.Response.Write(items.Aggregate((current, next) => string.Format("{0} , {1}", current, next)));
    }
    break;
}

Спасибо!

Ответы [ 2 ]

1 голос
/ 12 марта 2014

Вы просто используете параметр кэша в false.

 $.ajax({ 
     url: "url",
     cache: false,
     ....

Пример Fiddle

1 голос
/ 14 апреля 2010

Можете ли вы быть более конкретным? Есть несколько возможных вещей, которые могут пойти не так: кеширование в браузере или отладка на сервере, отображение старых значений для сеанса?

Убедитесь, что для параметра кэширования вашего вызова jQuery .ajax установлено значение false. Вы также можете захотеть увидеть этот вопрос и ответить относительно агрессивного характера кэширования ajax в IE.

...