summaryrefslogtreecommitdiff
path: root/lib/dojo/request/handlers.js.uncompressed.js
diff options
context:
space:
mode:
authorRichard Beales <[email protected]>2013-03-18 07:32:01 +0000
committerRichard Beales <[email protected]>2013-03-18 07:32:01 +0000
commit7c97d17aaf373339a8bcd917ad59ca6018148f0d (patch)
tree5a3c04f0f9529be392c1263d3feb75806eb43797 /lib/dojo/request/handlers.js.uncompressed.js
parent70db7424e7068701e60cc5bcdfe8f858be508179 (diff)
parentc670a80ddd9b03bd4ea6d940a9ed682fd26248d7 (diff)
Merge remote-tracking branch 'upstream/master'
Diffstat (limited to 'lib/dojo/request/handlers.js.uncompressed.js')
-rw-r--r--lib/dojo/request/handlers.js.uncompressed.js62
1 files changed, 62 insertions, 0 deletions
diff --git a/lib/dojo/request/handlers.js.uncompressed.js b/lib/dojo/request/handlers.js.uncompressed.js
new file mode 100644
index 000000000..7c0ed8302
--- /dev/null
+++ b/lib/dojo/request/handlers.js.uncompressed.js
@@ -0,0 +1,62 @@
+define("dojo/request/handlers", [
+ '../json',
+ '../_base/kernel',
+ '../_base/array',
+ '../has'
+], function(JSON, kernel, array, has){
+ has.add('activex', typeof ActiveXObject !== 'undefined');
+
+ var handleXML;
+ if(has('activex')){
+ // GUIDs obtained from http://msdn.microsoft.com/en-us/library/ms757837(VS.85).aspx
+ var dp = [
+ 'Msxml2.DOMDocument.6.0',
+ 'Msxml2.DOMDocument.4.0',
+ 'MSXML2.DOMDocument.3.0',
+ 'MSXML.DOMDocument' // 2.0
+ ];
+
+ handleXML = function(response){
+ var result = response.data;
+
+ if(!result || !result.documentElement){
+ var text = response.text;
+ array.some(dp, function(p){
+ try{
+ var dom = new ActiveXObject(p);
+ dom.async = false;
+ dom.loadXML(text);
+ result = dom;
+ }catch(e){ return false; }
+ return true;
+ });
+ }
+
+ return result;
+ };
+ }
+
+ var handlers = {
+ 'javascript': function(response){
+ return kernel.eval(response.text || '');
+ },
+ 'json': function(response){
+ return JSON.parse(response.text || null);
+ },
+ 'xml': handleXML
+ };
+
+ function handle(response){
+ var handler = handlers[response.options.handleAs];
+
+ response.data = handler ? handler(response) : (response.data || response.text);
+
+ return response;
+ }
+
+ handle.register = function(name, handler){
+ handlers[name] = handler;
+ };
+
+ return handle;
+});