好的,這是我的問題:)。 我有兩個[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;
}
您有登入系統嗎?多少時間後,它會發生?在等待半分鐘後你會得到正確的結果嗎? – 2011-01-13 14:40:12
在函數AddOrRemoveItemToCart中,爲什麼ajax函數包裝在document.ready中? – 2011-01-13 14:41:32