2017-02-14 1 views
0

Я использую углы и встроенную директиву $ http для публикации в нашей конечной точке API. Он работает в Chrome, но у меня проблема в Safari. Вот звонок от моего Api завода:Угловая запись Http в Safari Нажатие на другой URL-адрес, кроме Chrome

assignments: function(csv) { 
 
    var deferred = $q.defer(); 
 
    $http({ 
 
    method: 'POST', 
 
    url: '/api/numbers/assignments', 
 
    data: $.param({ 
 
     skipBillables: false, 
 
     assignments: csv, 
 
    }), 
 
    headers: { 
 
     'Content-Type': 'application/x-www-form-urlencoded' 
 
    } 
 
    }).success(function(data) { 
 
    deferred.resolve(data); 
 
    }).error(function(data) { 
 
    deferred.reject(data); 
 
    }) 
 
    return deferred.promise; 
 
},

Теперь мои контроллеры потребляет Api.assignments, что я создал. Вот следующий фрагмент:

Api.updateSubscription(org.id, cardData).then(function(data) { 
 
    
 
    Api.getSession().then(function(data) { 
 
     
 
    if (!_($scope.savedTollFreeNumberCheckout).isBlank()) { 
 

 
     var checkouttollfreenumber = '1' + $scope.savedTollFreeNumberCheckout.tfn; 
 
     var assignObj = [{ 
 
     phoneNum: checkouttollfreenumber, 
 
     email: owner.emailAddress, 
 
     percent: 0, 
 
     }]; 
 
     var csvFile = downloadCSV(assignObj); 
 
     console.log(csvFile); 
 
     Api.assignments(csvFile).then(function(data) { 
 
     $window.location.reload(); 
 
     }); 
 

 
    }; 
 
    }); 
 
});

Когда я называю это, она работает в Chrome. Единственным браузером, который он не работает, является Safari. В Safari полный URL-адрес, который вызывается: http://local.appname.com:9000/18775078169,[email protected],percentageparameter, который не является правильной конечной точкой. В Chrome он бьет http://local.appname.com:9000/api/numbers/assignments Если у кого-то есть предложения по исправлению, я очень благодарен за помощь.

ответ

-1

Я не думаю, что вам нужно иметь $ .params, если вы планируете отправлять данные как объект json с запросом на отправку.

$ .param в основном для сериализации параметров для параметров запроса.

assignments: function(csv) { 
     var deferred = $q.defer(); 
     $http({ 
     method: 'POST', 
     url: '/api/numbers/assignments', 
     data: { 
      skipBillables: false, 
      assignments: csv, 
     }, 
     headers: { 
     'Content-Type': 'application/json' 
     } 
     }).success(function(data) { 
     deferred.resolve(data); 
     }).error(function(data) { 
     deferred.reject(data); 
     }) 
     return deferred.promise; 
    }, 

вы должны это сделать, или если вы действительно хотите, чтобы отправить данные в queryparams

assignments: function(csv) { 
     var deferred = $q.defer(); 
     $http({ 
     method: 'POST', 
     url: '/api/numbers/assignments'+'?'+$.params({ skipBillables: false,assignments: csv}), 
     headers: { 
     'Content-Type': 'application/x-www-form-urlencoded' 
     } 
     }).success(function(data) { 
     deferred.resolve(data); 
     }).error(function(data) { 
     deferred.reject(data); 
     }) 
     return deferred.promise; 
    }, 

Но, как хорошая практика, чтобы отправить данные

Получить запросы - использование запросов Params

Почтовые запросы - используйте json

+0

Последнее изменение POST для GET и неправильное – charlietfl

+0

Также $ .param используется для POST, если ожидается, что данные будут отправлены как 'x-www-form-urlencoded' – charlietfl

+0

Есть ли у вас какие-либо рекомендации относительно того, почему сообщение, похоже, работает в хромовой, но не сафари? Цените помощь. –

Смежные вопросы