Jquery ajax 與 Jquery外掛程式 Ztree

來源:互聯網
上載者:User

    最近一個項目中需要很多地方做無重新整理技術,那麼就用到了Jquery ajax,以前因為項目做無重新整理的要求比較少點,又加上上個公司主要是用VS2003開發,哎這個老古董是夠老啊,從 前一個公司離職,主要也是因為公司的主要架構是在2003,接觸不到新的東西,所以離開的。

    因為以前自己也摸索過jquery ajax,但是還是實際項目卻用的少,開始還以為不會遇到很多問題,結果卻讓我頭疼呵呵,大大小小的問題,讓我當初有砸滑鼠的問題(砸電腦的想法卻沒有),所以現在記點東西。

   問題1:開發環境是在VS2008上,但是得使用.NET 2.0,所以就遇到了問題,發現竟然ajax竟然不進背景方法。

   測試代碼如下:

View Code

$(document).ready(function() {        $.ajax({            type: "POST",            url: "default.aspx/HelloWord",            dataType: "text",            contentType: "application/json; charset=utf-8",            beforeSend: function(XMLHttpRequest) {                $('#show').text("正在查詢");            },            success: function(msg) {                alert(eval("(" + msg + ")").d);            },            error: function(xhr, msg, e) { alert(msg); }        });    });
View Code

 [System.Web.Services.WebMethod()] public static string HelloWord() {       return "Hello Word";  } 

然後運行得到的卻是:看到頁面上有個JS語法錯誤,經過尋找發現web.config檔案裡面缺少一段代碼,所以我把這段代碼拷到web.config的<system.web>節點下,然後運行成功。

<httpModules>            <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>        </httpModules>

  問題2:後台返回的是JSON格式的資料,JS接收資料存為JSON資料對象。

  因為我後台取得的資料時IList<T>格式的,所以需要轉換為JSON格式類型的,所以使用了網上搜到的一個方法。

View Code

public static string ObjectToJson<T>(string jsonName, IList<T> IL)     {         StringBuilder Json = new StringBuilder();         Json.Append("[");         if (IL.Count > 0)         {             for (int i = 0; i < IL.Count; i++)             {                 T obj = Activator.CreateInstance<T>();                 Type type = obj.GetType();                 PropertyInfo[] pis = type.GetProperties();                 Json.Append("{");                 for (int j = 0; j < pis.Length; j++)                 {                     Json.Append("\"" + pis[j].Name.ToString() + "\":\"" + pis[j].GetValue(IL[i], null) + "\"");                     if (j < pis.Length - 1)                     {                         Json.Append(",");                     }                 }                 Json.Append("}");                 if (i < IL.Count - 1)                 {                     Json.Append(",");                 }             }         }         Json.Append("]");         return Json.ToString();     }

  前台JS代碼如下:

View Code

$(document).ready(function() {        $.ajax({            type: "POST",            url: "programList.aspx/getClassData",            dataType: "json",            contentType: "application/json; charset=utf-8",            success: function(msg) {                alert(eval("(" + msg + ")").d);            },            error: function(xhr, msg, e) { alert(msg); }        });        // 初始化資料(顯示第一頁)        onloadGrid(0);        InitData(0, 0);    });

運行又得到錯誤:JS錯誤缺少']',然後我用FireBug工具查看是否取到JSON值,查看得到,資料已經有響應,並且符合JSON格式而並沒有缺少']', 所以我又將JS裡面的dataType:text,運行後彈出資料成功。這裡我真的很納悶,不知道是我背景轉換方法不對,還是前台JS的不對,這裡發一疑問,麻煩看過的,知道的說聲,這裡先謝謝啦。

問題3:前面得到JSON格式的資料,綁定到Ztree上,發生錯誤,然後我在頁面上自己var一個對象,賦值這段值(從Fire Bug 中拷貝出來),綁定成功。

仔細的查看Ztree的API,發現繫結資料源必須是JSON對象,而我前面得到的卻是JSON格式的字串,所以這裡我們必須把得到的資料轉換為JSON對象。

代碼如下:

View Code

 success: function(msg) {         treeData = jQuery.parseJSON(msg);         var json = eval('(' + treeData.d + ')');         zTreeObj = $.fn.zTree.init($("#treeDemo"), setting, json);  }

這下徹底成功啦。
折騰啊,網上有些代碼到處都是錯,這真讓人鬱悶,所以我把我所遇到的一些問題,記下來。

這裡也推薦下ajax的調試工具:FireBug以及jquery樹外掛程式Ztree。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.