SharePoint 中使用Json传递数据到后台的 ashx

来源:互联网 发布:电商软件 编辑:程序博客网 时间:2024/04/29 03:06

 最近项目中遇到需要使用Json传递数据到SharePoint后台的 ashx,goole下方案,但遇到不少问题。最终解决了,把遇到的问题和大家分享下。

function ExecuteAjax(type, url, data, successCallBack, failedCallBack, alwaysCallBack) {    // Added time stamp,加这个是为了防止浏览器认为地址一样的请求可以直接取缓存数据,加了时间戳会让每次请求的Url不一样,这样浏览器就不会偷懒了    if (url.indexOf("?") != -1) {        url += "timestamp=" + Date.now();    }    else {        url += "?timestamp" + Date.now();    }    $.ajax({            type: type,            data: JSON.stringify(data), // 一定要用JSON.stringify            dataType: 'json',            contentType: 'application/json',            url: url       })        .done( function (result) {                        successCallBack(result);        })        .fail (function(errorMessage)        {            if (failedCallBack) {                failedCallBack(errorMessage);            }        })        .always ( function () {            if (alwaysCallBack) {                alwaysCallBack();            }        });   }


data的格式为

var dataForPost= { "PostId": 1, "WebUrl": 'blog' };


网上有些文章说可以直接在后台用context.Request.Params['DataKey']来取Json数据,但是我试过是不行的

因此我用的方式是在后台新建一个类用于接收从Json反序列化回来的对象 

public class PostData    {                     public string PostId { get; set; }        public string WebUrl { get; set; }           }

反序列化

 context.Response.ContentType = "application/json"; string json = new StreamReader(context.Request.InputStream).ReadToEnd(); PostData postData = jsonSerializer.Deserialize<PostData>(json);

注意如果在发送数据时没有用JSON.stringify,返序列化时会出错。


另外需要注意的是如果在ashx中需要更新SharePoint后台数据,需要将SPWeb的AllowUnsafeUpdates 属性设置为True:
 web.AllowUnsafeUpdates = true;



0 0
原创粉丝点击