Angular 1 big data for $httpProvider.defaults.transformRequest issue

10 views
Skip to first unread message

Arshak Tsarukyan

unread,
Jan 17, 2017, 5:02:25 AM1/17/17
to Angular
I have a strange situation when the ajax data is big I can get only part of them, each time the part is the same. All is good for small data, but when uploading data is big more (77 rows from excel spreadsheet, each row has 8 column) the response only 77 items. The strange situation happens inside $httpProvider.defaults.transformRequest. Please help.

My code is a
$httpProvider.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded;charset=utf-8';
$httpProvider
.defaults.headers.post['X-Requested-With'] = 'XMLHttpRequest';

   
/**
 * The workhorse; converts an object to x-www-form-urlencoded serialization.
 * @param {Object} obj
 * @return {String}
 */

var param = function(obj) {
   
var query = '', name, value, fullSubName, subName, subValue, innerObj, i;

   
for(name in obj) {
        value
= obj[name];

       
if(value instanceof Array) {
           
for(i=0; i<value.length; ++i) {
                subValue
= value[i];
                fullSubName
= name + '[' + i + ']';
                innerObj
= {};
                innerObj
[fullSubName] = subValue;
                query
+= param(innerObj) + '&';
           
}
       
}
       
else if(value instanceof Object) {
           
for(subName in value) {
                subValue
= value[subName];
                fullSubName
= name + '[' + subName + ']';
                innerObj
= {};
                innerObj
[fullSubName] = subValue;
                query
+= param(innerObj) + '&';
           
}
       
}
       
else if(value !== undefined && value !== null)
            query
+= encodeURIComponent(name) + '=' + encodeURIComponent(value) + '&';
       
else if(value == null)
            query
+= encodeURIComponent(name) + '=' + '&';
   
}

   
return query.length ? query.substr(0, query.length - 1) : query;
};
   
// Override $http service's default transformRequest
$httpProvider
.defaults.transformRequest = [function(data) {
   
return angular.isObject( data ) && String( data ) !== '[object File]' ? angular.toParam( data ) : data;
}];


Reply all
Reply to author
Forward
0 new messages