当页面处于非活动状态一段时间后,单击事件不会触发

时间:2011-01-13 14:31:32

标签: c# javascript asp.net jquery ajax

好的,这是我的问题:)。 我的代码中有几个[WebMethods],并使用jquery ajax从服务器获取数据。 然后它发生:)。经过一段时间,当我尝试点击按钮时,页面处于非活动状态,该按钮应该向服务器发送请求,它只是在大约一半的时间内没有做任何事情,只有当事件被触发并且我从服务器得到响应。

我的javascript看起来像这样:

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 个答案:

答案 0 :(得分:1)

通常我会说你的会话已经过期了。但是,由于事件在半分钟后发生,它必须是别的东西。

尝试使用Firebug进行调试,并检查是否立即调用AddOrRemoveItemToCart。您还可以查看浏览器和服务器之间的流量。

答案 1 :(得分:0)

您的活动应立即启动,但正如Remy所说,您的会话可能已过期,并且重新建立会话对象并处理请求需要一些时间。