C#前後臺操作JSON
阿新 • • 發佈:2018-12-06
一、前段程式碼
function initDeptSelect() { var datas = {"plant":$('#plantSelect').val()}; //獲取某個元件的值,以json格式形式存放 var jsonVal = JSON.stringify(datas);//將值轉化為json物件,必須要做 $.ajax({ type: 'post', //請求方式 url: 'Upload.aspx/initDeptSelect', //請求地址 data: jsonVal, //傳送的資料,這裡是json物件 dataType: 'json', //資料型別 contentType: 'application/json;charset=utf-8', async: true, //開啟非同步請求 success: function (data) { //請求成功,後臺處理結束後的函式執行 var $select = $("#deptSelect"); var jsonObject = $.parseJSON(data.d); //將返回的資料解釋為一個數組,data是後臺函式的返回值,返回到前端的時候,會多變成{d:"[xxx,xx,xx]"} $.each(jsonObject, function (key, value) { var $option = $('<option></option>'); $option.attr('value', jsonObject[key]); $option.text(jsonObject[key]); $select.append($option); }); $('#deptSelect').selectpicker('refresh'); $('#deptSelect').selectpicker('render'); }, error: function (XMLHttpRequest, textStatus, errorThrown) { alert("Failed to get Dept Informations."); alert(XMLHttpRequest.responseText); alert(XMLHttpRequest.status); alert(XMLHttpRequest.readyState); alert(textStatus); // parser error; } }); }
二、後端程式碼
這裡用WinForm,跟MVC稍微有點區別:WinForm是在方法上面用[WebMethod]宣告,而MVC是用[HttpPost]宣告
[WebMethod] public static string initDeptSelect(string plant)//後臺獲取json:plant的值,引數個數要與傳遞的一致,否則,ajax請求失敗 { List<string> deptList = new List<string>(); deptList.Add("hello"); deptList.Add("world"); //使用JsonConvert.SerializeObject(List list)最為方便;或者使用字串拼接的形式,如拼接成{xxx:xxx,xx:xx}的字串,然後返回 return JsonConvert.SerializeObject(deptList); }