AJAX File Browser Request Pipeline
The IT Hit WebDAV AJAX library, that IT Hit AJAX File Browser is built on, provides events that fire when sending data to the server and when data is available on a client side. In this event handlers, you can change any data submitted between client and server.
Modifying Data Before Sending Request
The OnBeforeRequestSend event is fired before request is being submitted to the server and provides all information that is used when creating the request such as URL, HTTP verb, headers and request body:
function onBeforeRequestSend(requestData){ // HTTP method and URL oTD.value += requestData.Method + ' ' + requestData.Href; // headers for(var header in requestData.Headers){ oTD.value += '\n' + header + ': ' + requestData.Headers[header]; } // request body oTD.value += '\n' + requestData.Body + '\n'; } ... var ajaxFileBrowser = new ITHit.WebDAV.Client.AjaxFileBrowser.Controller('AjaxFileBrowserContainer', 'http://webdavserver.com/', 'height: 500px; width: 500px'); ITHit.Events.AddListener(ajaxFileBrowser.GetSession(), 'OnBeforeRequestSend', onBeforeRequestSend);
In your event handler, you can change the URL and verb, modify any headers and update the request body.
Tunneling
Tunneling is required if you would like to submit all requests using only GET and POST verbs only and avoid using WebDAV-specific verbs such as PROPFIND, PROPRATCH, OPTIONS, REPORT, etc.
To configure tunneling attach your OnBeforeRequestSend handler and change HTTP method name to GET (or any other verb). The original verb is usually passed to the server as a custom header:
function onBeforeRequestSend(requestData){ requestData.Headers['Method'] = requestData.Method; requestData.Method = 'GET'; }
Note that your WebDAV server must support tunneling, IT Hit WebDAV Server Engine does not support tunneling by default.
Microsoft Office requires full WebDAV Class 2 support, it would not work with tunneling.
Modifying Data After Receiving a Response
The OnResponse event fires when the data is received from the server. In your event handler, you can update any data received from the server.
function onResponse(responceData) { // get HTTP status and description oTD.value += '\n\n' + responceData.Status + ' ' + responceData.StatusDescription; // get headers for (var header in responceData.Headers) { oTD.value += '\n' + header + ': ' + responceData.Headers[header]; } // get request body oTD.value += '\n' + responceData.BodyText + '\n-----'; } ... ITHit.Events.AddListener(ajaxFileBrowser.GetSession(), 'OnResponse', onResponse);
AJAX File Browser Control Events Demo