使用JSRequest读取URL中的信息

JSRequest是SharePoint提供的一个客户端对象,是在init.js这个文件中定义的(文件位于C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\15\TEMPLATE\LAYOUTS\ 文件夹中),使用这个对象可以用来方便的读取URL中的信息,因为这个对象提供了三个属性:

1.JSRequest.FileName

2.JSRequest.PathName

3.JSRequest.QueryString["Param"]


在使用JSRequest之前,需要首先使用以下代码进行初始化:

  1. JSRequest.EnsureSetup();  

在初始化之后就可以使用上面的三个属性了,例如对于一个名字为Product的list,新建一个item的页面(NewForm.aspx)的URL是:

  1. http://server2013/Lists/Product/NewForm.aspx?Source=http%2A%2F%2Fserver2013%2FLists%2FProduct%2FAllItems%2Easpx&RootFolder=  

第一个属性JSRequest.FileName用来读取URL中的页面的名字,对于这个Url,页面的名字为NewForm.aspx。

第二个属性JSRequest.PathName用来读取URL中的页面路径,对于这个URL,路径为/Lists/Product/NewForm.aspx。

第三个属性JSRequest.QueryString用来获取URL中的参数,例如URL中的Source参数值可以使用JSRequest.QueryString["Source"]来获取,以下是在这个页面上执行的结果(Chrome浏览器):


以下是这个对象的代码,来自于init.js,还是很简单的,可以看到JSRequest使用EnsureSetup方法分析URL,来获取这三个属性的值。

[javascript] view plaincopy在CODE上查看代码片派生到我的代码片
    1. JSRequest = {  
    2.         QueryString: null,  
    3.         FileName: null,  
    4.         PathName: null,  
    5.         EnsureSetup: function() {  
    6.             if (JSRequest.QueryString != null)  
    7.                 return;  
    8.             JSRequest.QueryString = [];  
    9.             var queryString = (ajaxNavigate.get_search()).substring(1);  
    10.             var pairs = queryString.split("&");  
    11.             var p;  
    12.   
    13.             for (var i = 0; i < pairs.length; i++) {  
    14.                 var pair = pairs[i];  
    15.   
    16.                 p = pair.indexOf("=");  
    17.                 if (p > -1) {  
    18.                     var key = pair.substring(0, p);  
    19.                     var value = pair.substring(p + 1);  
    20.   
    21.                     JSRequest.QueryString[key] = value;  
    22.                 }  
    23.             }  
    24.             var path = JSRequest.PathName = window.location.pathname;  
    25.   
    26.             p = path.lastIndexOf("/");  
    27.             if (p > -1) {  
    28.                 JSRequest.FileName = path.substring(p + 1);  
    29.             }  
    30.             else {  
    31.                 JSRequest.PageName = path;  
    32.             }  
    33.         }  
    34.     }; 

posted on 2015-09-10 11:56  !无名之辈  阅读(665)  评论(0)    收藏  举报