天天看點

SharePoint 2010 以Jquery Ajax方式更新SharePoint清單資料!

    之前本人的部落格介紹了《sharepoint 2010自定義通路日志清單設定移動終端否和用戶端通路系統等計算列的公式》,那如何通過Jquery送出通路日志到自定義的SharePoint的通路日志清單中。本文介紹通過Jquery ajax通路SharePoint 2010的list web服務并添加清單記錄,這樣就無需背景代碼就可以實作操作清單,IP位址的解析采用搜狐提供的以JSON格式傳回的IP位址資料:http://pv.sohu.com/cityjson?ie=utf-8,具體下圖:

SharePoint 2010 以Jquery Ajax方式更新SharePoint清單資料!
     具體的js代碼,如下圖:

<script type="text/javascript" src="http://pv.sohu.com/cityjson?ie=utf-8" ></script>	

  
Date.prototype.Format = function (fmt) { //author: meizz 
        var o = {
        "M+": this.getMonth() + 1, //月份 
        "d+": this.getDate(), //日 
        "h+": this.getHours(), //小時 
        "m+": this.getMinutes(), //分 
        "s+": this.getSeconds(), //秒 
        "q+": Math.floor((this.getMonth() + 3) / 3), //季度 
        "S": this.getMilliseconds() //毫秒 
       };
       if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
        for (var k in o)
        if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
        return fmt;
       }

        function CreateNewItem(user) {
        
        var vpage = window.location.href;
        var cip = returnCitySN['cip'];
        var city= returnCitySN['cname'];
        var useragent = navigator.userAgent;
 
        var Sys = {};  
        var ua = navigator.userAgent.toLowerCase();  
        var brw;  
        (brw = ua.match(/msie ([\d.]+)/)) ? Sys.ie = brw[1] :  
        (brw = ua.match(/firefox\/([\d.]+)/)) ? Sys.firefox = brw[1] :  
        (brw = ua.match(/chrome\/([\d.]+)/)) ? Sys.chrome = brw[1] :  
        (brw = ua.match(/opera.([\d.]+)/)) ? Sys.opera = brw[1] :  
        (brw = ua.match(/version\/([\d.]+).*safari/)) ? Sys.safari = brw[1] : 0;  
     
        
        var time2 = new Date().Format("yyyy-MM-dd hh:mm:ss");  
        var title = $(document).find("title").text();
        
        var batch =
        "<Batch OnError=\"Continue\"> \
            <Method ID=\"1\" Cmd=\"New\"> \
              <Field Name=\"Title\">" + user + "</Field> \
                <Field Name=\"UserName\">" + user + "</Field> \
                <Field Name=\"VisitPage\">" + vpage + "</Field> \
                <Field Name=\"VisitTime\">" + time2 + "</Field> \
                <Field Name=\"VisitIPAddress\">" + cip + "</Field> \
                <Field Name=\"VisitIPCity\">" + city + "</Field> \
                <Field Name=\"UserAgent\">" + useragent + "</Field> \
                <Field Name=\"Browser\">" + brw + "</Field> \
                <Field Name=\"VisitPageName\">"+title+"</Field> \
            </Method> \
        </Batch>";


          var soapEnv =
        "<?xml version=\"1.0\" encoding=\"utf-8\"?> \
        <soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" \
            xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" \
            xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\"> \
          <soap:Body> \
            <UpdateListItems xmlns=\"http://schemas.microsoft.com/sharepoint/soap/\"> \
              <listName>使用者通路日志</listName> \
              <updates> \
                " + batch + "</updates> \
            </UpdateListItems> \
          </soap:Body> \
        </soap:Envelope>";


         $.ajax({
        url: "http://sharepoint.contoso.uat/MOA/_vti_bin/lists.asmx",
        beforeSend: function(xhr) {
            xhr.setRequestHeader("SOAPAction",
            "http://schemas.microsoft.com/sharepoint/soap/UpdateListItems");
        },
        type: "POST",
        dataType: "xml",
        data: soapEnv,
        complete: processResult,
        contentType: "text/xml; charset=utf-8"
        });

                 
                
                 }
         
         function processResult(xData, status) {
    //alert(xData);
}

      

   用這種方式還可以實作清單的更新、删除等操作,這樣就可以通過前端JS代碼實作操作後端的清單了,無需編寫背景代碼。

本部落格為軟體人生原創,歡迎轉載,轉載請标明出處:http://www.cnblogs.com/nbpowerboy/p/3363574.html 。演繹或用于商業目的,但是必須保留本文的署名軟體人生(包含連結)。如您有任何疑問或者授權方面的協商,請給我留言。

繼續閱讀