2012-03-13 70 views
1

我wolud喜歡得到結果:2222。但我現在得不到結果。輸出'3333'總是。 任何人都可以幫助我嗎?非常感謝!用asp.net在jquery ajax中更改css

<head runat="server"> 
<title></title> 
<script src="/Scripts/jquery-1.4.1.js" type="text/javascript"></script> 
<script language="javascript" type="text/javascript"> 
    $(function() { 
     $("#Button1").click(function() { 
      checkCard('333'); 
      var arrlist = $("span[class='error']"); 
      if (arrlist.length > 0) { 
       alert('2222') 
      } 
      else { 
       alert('3333'); 
      } 
     }); 
    }) 
    function checkCard(card_no) { 
     $.ajax({ 
      type: "GET", 
      url: "CheckCard.ashx?card_no=" + card_no, 
      success: function (data) { 
       if (data == "true") { 
        $("#sw").addClass("error"); 
       } 
       else { 
        $("#sw").removeClass("error"); 
       } 
      } 
     }); 
    } 
</script> 
</head> 
<body> 
<form id="form1" runat="server"> 
<div> 
    <span id="sw"></span> 
</div> 
</form> 
    <input id="Button1" type="button" value="button" /> 
</body> 

CheckCard.ashx: 
using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Data.SqlClient; 

namespace SwipeCard 
{ 
/// <summary> 
/// Summary description for CheckCard 
/// </summary> 
public class CheckCard : IHttpHandler 
{ 

    public void ProcessRequest(HttpContext context) 
    { 
     context.Response.ContentType = "text/html"; 

     context.Response.Write("true"); 

     context.Response.End(); 

    } 

    public bool IsReusable 
    { 
     get 
     { 
      return false; 
     } 
    } 
} 
} 

我wolud希望得到的結果:2222。但我不能得到結果now.Output「3333」始終。 任何人都可以幫助我嗎?非常感謝!

回答

3

$.ajax是異步的。您的樣式檢查會立即跟隨呼叫,因此不能保證操作已完成。把支票放在成功回調中。

function checkCard(card_no) { 
    $.ajax({ 
     type: "GET", 
     url: "CheckCard.ashx?card_no=" + card_no, 
     success: function (data) { 
      if (data == "true") { 
       alert("Condition 1 exists"); 
       $("#sw").addClass("error"); 
      } 
      else { 
       alert("Condition 2 exists"); 
       $("#sw").removeClass("error"); 
      } 
     } 
    }); 
}