利用回調實現指令碼實體類和類比Ajax

來源:互聯網
上載者:User

 

 

  這裡有幾點。 我們用asp.net開發資料庫應用時。時常要建立一些實體如

 public class UserEntity
...{
   public string UserName
   ...{
     get...{
     return "";}
    }
   public string UserEmail
    ...{
      get...{
       return "" ;}
     }
}

      下面要講的是如何使用指令碼來類比這種實體

     首先 要講解概念 要返還類似這種實體指令碼可以這麼寫 

 

   UserEntity=function()
...{
  return ...{"UserName":"shenyi","UserEmail":"shenyi@csdn.net"}
}

     這樣我們在 指令碼中只要寫

   var scriptEntity=new UserEntity();
  scriptEntity.UserName;
  scriptEntity.UserEmail;

   就可以引用到,好  指令碼實體構建好了。接下來我們要從伺服器取資料如下

    建立一個aspx頁面 假如叫 getData.aspx 在代碼裡寫

   public void Page_load()
  ...{
   int userid=int.parse(Request.QueryString["uid"].ToString());
      string sql="select * from Users where userid="+userid.ToString();
     using(DataTable dt=SqlHelper.ExecuteDataSet(sql).Tables[0])   //SqlHelper 不要告訴我 不知道是什麼
    ...{
        // 這裡構建一個 字元 令 一個 指令碼變數 等於 {"UserName":dt.rows[0]["username].......}
        //如  Response.Write("userReturnValue={.......//這裡自己拼接}");
       Response.End();
    }
  }

 

    以下是如何把指令碼和這個 aspx頁面建立聯絡  如下直接是代碼

   

 var UserReturnValue=""  //這個很重要一定要定義 因為在服務端要對其賦值 

ComJS=function()
...{
   
   this.GetEntitying=function(uid,callback)
   ...{
   var scriptObj=document.createElement("script");
    scriptObj.type="text/javascript";
    scriptObj.src="getData.aspx?uid="+uid
     document.getElementsByTagName("head")[0].appendChild(scriptObj);
 
 
       scriptObj.onreadystatechange=function()
        ...{
            if(scriptObj.readyState=="loaded")
            ...{
                  
                 callback.EndGetEntity(UserReturnValue);
            }
        }
        
    }
}

 

    這裡使用 callback回調 是最重要的一步 當指令碼載入完畢後才會對UserReturnValue 進行賦值 因此我們不能直接獲得這個實體.

  上面指令碼寫完後 我們在頁面要開始獲得這個 實體

 

  var cjs=new ComJS();  //初始化我們的指令碼對象
   function BeginGetEntity()
      ...{
         this.EndGetEntity=function(entityDataList)
           ...{
            //entityDataList   這個就是最終的實體物件 你可以直接 用 entityDataList.UserName 或者 entityDataList.表裡欄位名
        //來擷取這個實體的對象
      // 注意  業務操作 要在這個 函數內執行。因為這是一個回調。也就是當服務端把資料取到了 這邊才開始執行
嚴格來說就是非同步擷取資料。類似Ajax  但是不使用 xmlhttp對象 
          }
      }
    
     var bge=new BeginGetEntity();
        cjs.GetEntity("3",bgelist);  //這裡的3代表我要取使用者id等於3的 資料

 

    好/ 整個用指令碼構建實體的方法寫好 希望對大家尤其是初學者 會有點用。其實在指令碼中要實現ajax不光只有xmlhttp可以實現 很普通的指令碼也能實現

請關注我的個人官網: www.shenyisyn.org

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.