これは私の問題です:)。 私はコードの中に[WebMethods]をいくつか持っていて、jquery ajaxを使ってサーバーからデータを取得しています。 そしてそれは起こる:)。サーバーに要求を送信する必要があるボタンをクリックしようとすると、ページがアクティブでないうちに、半分の時間だけ何もしないで、イベントが発生し、サーバーから応答が返されます。以下のようなものページが一定期間アクティブでないときにクリックイベントが発生しない
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;
}
ログインシステムはありますか?どのくらいの時間を過ぎた後に起こるのでしょうか?待ってから30分後に正しい結果が得られますか? –
関数AddOrRemoveItemToCartでは、なぜdocument.readyにajax関数がラップされていますか? –