2015年2月24日 星期二

AJAX與WebServer與JSON

.aspx :

 var JsObj = {SaveData: daveAllData};
 var datastr = JSON.stringify(JsObj);

        $.ajax({
            async: false,
            type: "POST",
            url: "/WebServiceGetData.asmx/SaveAll",
            data: datastr,
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (responseI) {
                console.log("ajax s in");
                alert("儲存成功");
                var x2 = JSON.parse(responseI.d);
                console.log(x2);
            },
            error: function (response) {
                console.log("fail s");
            }
        })

data 傳值 一定要JSON格式 所以要做上面兩行的轉換
第一行SaveData是自訂的 後面的daveAllData才是資料
第二行就是把它序列化嚕

webserver:

 [WebMethod]
        public string SaveAll(object SaveData)
        {
            var SData = JsonConvert.SerializeObject(SaveData);
            dynamic stuff = JsonConvert.DeserializeObject(SData);

            var x = stuff[0].fieldid;
            var y = stuff[0].fieldvalue;
            var x2 = stuff[1].fieldid;
            var y2 = stuff[1].fieldvalue;
            //----
            return x;
        }

接收的資料 也要做轉換 即可以把值讀出來


stuff  沒有length方法
要嘛
JArray stuff = (JArray)JsonConvert.DeserializeObject(SData);
stuff.Count 就是它的長度

不然就
foreach的方式
             var x = "";
            foreach (var item in stuff)
            {
                x += item.fieldid;
                x += item.fieldvalue;
            }
           


沒有留言:

張貼留言