好的,这是我的问题:)。 我的代码中有几个[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;
}
答案 0 :(得分:1)
通常我会说你的会话已经过期了。但是,由于事件在半分钟后发生,它必须是别的东西。
尝试使用Firebug进行调试,并检查是否立即调用AddOrRemoveItemToCart。您还可以查看浏览器和服务器之间的流量。
答案 1 :(得分:0)
您的活动应立即启动,但正如Remy所说,您的会话可能已过期,并且重新建立会话对象并处理请求需要一些时间。