2017年6月1日 星期四

【ASP.NET Webform】JQuery Ajax to codebehind


透過 JQuery ajax call codebehind method 刷新 DropDownList 的選項為範例。

首先,這是 Server side 取回第二個下拉選單資料的方法
  1. [WebMethod]
  2. public static string UpdateDropDownListSpecies(string family)
  3. {
  4. string json = "[]";
  5. if (family == "Cat")
  6. {
  7. json = JsonConvert.SerializeObject(_cats);
  8. }
  9. else if (family == "Dog")
  10. {
  11. json = JsonConvert.SerializeObject(_dogs);
  12. }
  13.  
  14. return json;
  15. }
要注意
  1. 要 [WebMethod],其實正規來說這種應該寫在 WebService,寫在 aspx 算偷懶。
  2. 需要是 static 的,所以取用的資料來源也要注意範圍。

Client side
  1. $.ajax({
  2. type: "POST",
  3. url: "Default.aspx/UpdateDropDownListSpecies",
  4. data: "{'family':'" + family + "'}",
  5. contentType: "application/json; charset=utf-8",
  6. success: function (data) {
  7. $("#DropDownList_species").empty();
  8. $.each(JSON.parse(data.d), function (i, value) {
  9. $("#DropDownList_species").append($("<option>").text(value).attr("value", value));
  10. });
  11. },
  12. error: function (data) {
  13. }
  14. });
記得
  1. 要有 contentType
  2. 取回來的 json 要先反解回物件才能用
  3. 取回來的內容在 property d 下

Event validation 有問題,請參考 這篇,這次實作是採用保哥提的解。
Example: Github

沒有留言:

張貼留言