微軟MVC3框架下JqueryMobile Ajax的實現(以更新ListView為例)


一、    提供后台數據的接口

后台主要提供Json序列化后的數據。任何一個對象都可以序列化為Json字符串。在后台將對象序列化后字符串可以直接提交給前台反序列化成對象。

1、提供JSON的接口:

 

 1         /// <summary>
 2         /// 根據時間取得短醫囑
 3         /// </summary>
 4         /// <param name="date"></param>
 5         /// <returns>返回經過JSON序列化后的字符串</returns>
 6         private string GetShortAdviseByDay(string date)
 7         {
 8             List<DocAdvise> docAdvise = pDao.getDocAdviseByDate((List<DocAdvise>)Session["shortAd"], date, bDay);  //根據日期篩選醫囑記錄
 9             JavaScriptSerializer jss = new JavaScriptSerializer();    //新建序列化對象
10             string result = jss.Serialize(docAdvise);    //將要返回的對象序列化為JSON字符串
11             return result;
12 
13         }

2、在MVC的Control層調用 1 中函數,返回JSON結果字符串:

 1         /// <summary>
 2         /// 異步請求短醫囑
 3         /// </summary>
 4         /// <param name="date"></param>
 5         /// <returns></returns>
 6         public ActionResult ResponseShortAdvise(string date)
 7         {
 8             return Content(GetShortAdviseByDay( date));
 9 
10         }

 

二、    前台Js和jquery的異步請求數據和Dom編程

1、前台的HTML代碼:

1                   <ul id="emrListView" data-role="listview" data-inset="true" style="margin-top: 0px;">
2                    <li><a href="#"><img  src="#" alt="病例內容1" /></a></li>
3                    <li><a href="#"><img  src="#" alt="病例內容2" /></a></li> 
4                   </ul>

2、Jquery 異步請求數據,Dom更新

主要實現的過程:

1)異步請求數據,返回了data數據;

2)將返回后的數據反序列化成listUrl對象;

3)將listUrl對象的數據添加到id為EmrGallery的listview中;

4)重新渲染ListView。這是一個很重要而往往比較容易漏掉的步驟,少了這一步,JqueryMobile更新后的樣式不能正確渲染。

 

 1 function ReflashEMR(time) {
 2     //異步請求數據。其中ResponseShortAdvise為Control里面的函數;time為傳入的參數;data為返回的JSON數據
 3     $.post("../YdylAjax/ResponseShortAdvise", { "date": time }, function (data, status) {
 4         var listUrl = $.parseJSON(data);
 5         if (status == "success") {
 6             var objListView = document.getElementById("emrListView");
 7             objListView.innerHTML = "";    //清空ListView原本的內容
 8             //如果服務器返回記錄為空
 9             if (listUrl.length == 0) {
10                 $("#EmrGallery").append('<h4>提示:當前日期沒有數據</h4>');
11                 return;
12             }
13             var tempnum = 1;
14             for (var i = listUrl.length - 1; i >= 0; i--) {
15                 $("#emrListView").append(' <li><a href="#"  data-transition="fade"><img src="http://www.cnblogs.com/Content/imges/DutyRoster.png" class="ui-li-icon"> <h3 >病歷 ' + tempnum + ' </h3><p >  醫生:' + listUrl[i].Doc + ' </p><p> ' + listUrl[i].Dep  + listUrl[i].Time + ' </p></a></li>');        //將ListView中新的li
16                 tempnum++;
17             }
18         }
19         $("#emrListView").listview("refresh");  //這里是重新渲染JqueryMobile中ListView的樣式
20     });
21 
22 }

 

其實總的來說也不是很復雜。就是前台用jquery異步請求后台Control中經過JSON序列化后的字符串數據,請求成功數據后,把JSON字符反序列化為JS的對象,然后在HTML中展示出來即可、


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM