web/data/cubicweb.ajax.js
changeset 6448 8590d82e9b1b
parent 6215 759cf097f5aa
child 6555 f8b36b1e98bf
equal deleted inserted replaced
6447:f5d1b1025702 6448:8590d82e9b1b
   186         setFormsTarget(node);
   186         setFormsTarget(node);
   187     }
   187     }
   188     _loadDynamicFragments(node);
   188     _loadDynamicFragments(node);
   189     // XXX [3.7] jQuery.one is now used instead jQuery.bind,
   189     // XXX [3.7] jQuery.one is now used instead jQuery.bind,
   190     // jquery.treeview.js can be unpatched accordingly.
   190     // jquery.treeview.js can be unpatched accordingly.
   191     jQuery(CubicWeb).trigger('server-response', [true, node]);
   191     jQuery(cw).trigger('server-response', [true, node]);
   192     jQuery(node).trigger('server-response', [true, node]);
   192     jQuery(node).trigger('server-response', [true, node]);
   193 }
   193 }
   194 
   194 
   195 function remoteCallFailed(err, req) {
   195 function remoteCallFailed(err, req) {
   196     cw.log(err);
   196     cw.log(err);
   294         var deferred = new Deferred();
   294         var deferred = new Deferred();
   295         jQuery.ajax({
   295         jQuery.ajax({
   296             url: url,
   296             url: url,
   297             type: (reqtype || 'GET').toUpperCase(),
   297             type: (reqtype || 'GET').toUpperCase(),
   298             data: form,
   298             data: form,
       
   299             traditional: true,
   299             async: true,
   300             async: true,
   300 
   301 
   301             beforeSend: function(xhr) {
   302             beforeSend: function(xhr) {
   302                 deferred._req = xhr;
   303                 deferred._req = xhr;
   303             },
   304             },
   304 
   305 
   305             success: function(data, status) {
   306             success: function(data, status) {
   306                 if (deferred._req.getResponseHeader("content-type") == 'application/json') {
       
   307                     data = cw.evalJSON(data);
       
   308                 }
       
   309                 deferred.success(data);
   307                 deferred.success(data);
   310             },
   308             },
   311 
   309 
   312             error: function(xhr, status, error) {
   310             error: function(xhr, status, error) {
   313                 try {
   311                 try {
   326     } else {
   324     } else {
   327         var result = jQuery.ajax({
   325         var result = jQuery.ajax({
   328             url: url,
   326             url: url,
   329             type: (reqtype || 'GET').toUpperCase(),
   327             type: (reqtype || 'GET').toUpperCase(),
   330             data: form,
   328             data: form,
       
   329             traditional: true,
   331             async: false
   330             async: false
   332         });
   331         });
   333         // check result.responseText instead of result to avoid error encountered with IE
       
   334         if (result.responseText) {
       
   335             // XXX no good reason to force json here, 
       
   336             // it should depends on request content-type
       
   337             result = cw.evalJSON(result.responseText);
       
   338         }
       
   339         return result;
   332         return result;
   340     }
   333     }
   341 }
   334 }
   342 
   335 
   343 //============= higher level AJAX functions using remote calls ===============//
   336 //============= higher level AJAX functions using remote calls ===============//
   637 remoteExec = cw.utils.deprecatedFunction(
   630 remoteExec = cw.utils.deprecatedFunction(
   638     '[3.9] remoteExec() is deprecated, use loadRemote instead',
   631     '[3.9] remoteExec() is deprecated, use loadRemote instead',
   639     function(fname /* ... */) {
   632     function(fname /* ... */) {
   640         setProgressCursor();
   633         setProgressCursor();
   641         var props = {
   634         var props = {
   642             'fname': fname,
   635             fname: fname,
   643             'pageid': pageid,
   636             pageid: pageid,
   644             'arg': $.map(cw.utils.sliceList(arguments, 1), jQuery.toJSON)
   637             arg: $.map(cw.utils.sliceList(arguments, 1), jQuery.toJSON)
   645         };
   638         };
   646         var result = jQuery.ajax({
   639         var result = jQuery.ajax({
   647             url: JSON_BASE_URL,
   640             url: JSON_BASE_URL,
   648             data: props,
   641             data: props,
   649             async: false
   642             async: false,
       
   643             traditional: true
   650         }).responseText;
   644         }).responseText;
   651         if (result) {
   645         if (result) {
   652             result = cw.evalJSON(result);
   646             result = cw.evalJSON(result);
   653         }
   647         }
   654         resetCursor();
   648         resetCursor();
   659 asyncRemoteExec = cw.utils.deprecatedFunction(
   653 asyncRemoteExec = cw.utils.deprecatedFunction(
   660     '[3.9] asyncRemoteExec() is deprecated, use loadRemote instead',
   654     '[3.9] asyncRemoteExec() is deprecated, use loadRemote instead',
   661     function(fname /* ... */) {
   655     function(fname /* ... */) {
   662         setProgressCursor();
   656         setProgressCursor();
   663         var props = {
   657         var props = {
   664             'fname': fname,
   658             fname: fname,
   665             'pageid': pageid,
   659             pageid: pageid,
   666             'arg': $.map(cw.utils.sliceList(arguments, 1), jQuery.toJSON)
   660             arg: $.map(cw.utils.sliceList(arguments, 1), jQuery.toJSON)
   667         };
   661         };
   668         // XXX we should inline the content of loadRemote here
   662         // XXX we should inline the content of loadRemote here
   669         var deferred = loadRemote(JSON_BASE_URL, props, 'POST');
   663         var deferred = loadRemote(JSON_BASE_URL, props, 'POST');
   670         deferred = deferred.addErrback(remoteCallFailed);
   664         deferred = deferred.addErrback(remoteCallFailed);
   671         deferred = deferred.addErrback(resetCursor);
   665         deferred = deferred.addErrback(resetCursor);