Событие клика не срабатывает, если страница неактивна в течение некоторого времени - PullRequest
1 голос
/ 13 января 2011

Хорошо, это моя проблема :).У меня есть пара [WebMethods] в моем коде и с помощью jquery ajax для получения данных с сервера.И тогда это происходит :).Через некоторое время, когда страница неактивна, когда я пытаюсь нажать на кнопку, которая должна отправить запрос на сервер, она просто ничего не делает в течение примерно половины минуты, и только после этого происходит событие, и я получаю ответ от сервера.

myJavaScript выглядит примерно так:

addToCart.click(function () {

AddOrRemoveItemToCart($(this));

});

function AddOrRemoveItemToCart(control)
{
var itemId = contol.attr("id");
$('document').ready(function () {
        $.ajax({
            type: "POST",
            url: "Home.aspx/AddOrRemoveItemToCart",
            data: "{itemId:" + itemId + "}",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (data) {
                if (data.d.length > 0) {
                    SucessAddItemToCart(data.d);
                }
            },
            error: function (textStatus) {
                alert(textStatus);
            }
        });
    });
}

function SucessAddItemToCart(data)
{
//DO SOMETHING WITH DATA
}

А мой код на стороне сервера выглядит примерно так:

[WebMethod]
public static List<CartItem> AddOrRemoveItemToCart(string itemId)
{
List<CartItem> items = new List<CartItem>();
List<CartItem>temp = new List<CartItem>();
bool check = false;
if(HttpContext.Current.Session["items"]!=null)
{
items = (List<CartItem>)HttpContext.Current.Session["items"];
foreach(CartItem c in items)
{
if(c.Id != itemId)
temp.Add(c);

else
check = true;
}
if(!check)
temp.Add(new CartItem{Id = itemId});
}
HttpContext.Current.Session["items"]=temp;
return temp;
}

Ответы [ 2 ]

1 голос
/ 13 января 2011

Обычно я бы сказал, что ваша сессия истекла.Но поскольку событие происходит через полминуты, оно должно быть чем-то другим.

Попробуйте выполнить отладку с помощью Firebug и проверьте, вызывается ли AddOrRemoveItemToCart немедленно.Вы также можете видеть трафик между браузером и сервером.

0 голосов
/ 13 января 2011

Ваше событие должно сработать немедленно, но, как сказал Реми, ваш Session, вероятно, истек, и требуется некоторое время, чтобы восстановить объект сеанса и обработать запрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...