繁体   English   中英

如何在角度js中将charset utf-8设置为$ http GET和POST的标头

[英]how set charset utf-8 to header to $http GET and POST in angular js

我的服务职能是:

function getHeader() {

            return {
                headers: {
                    'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
                    'authorization': $cookieStore.get('loggedin').token,
                    'region': String($cookieStore.get('loggedin').roles[0].region),
                    'branch': String($cookieStore.get('loggedin').roles[0].branch)
                }
            };
        }


function getCompletedPlateReq() {
        var deferred = $q.defer();
        $http.get('/client/get/reqplate/completed', {}, getHeader()).success(function (data) {
            if (data) deferred.resolve(data);
        }).error(function (err) {
            if (err) deferred.reject();
        });

        return deferred.promise;

    }

这些是PlateService函数,当我尝试调用getCompletedPlateReq()函数时,例如:

PlateService.getCompletedPlateReq().then(function (data) {
        data.platePocess = 'completed';
        $scope.completedPlates = data;
        setDataToPnl(data);

    })

我收到此错误:

Error: Failed to execute 'setRequestHeader' on 'XMLHttpRequest': 'ŞanlıUrfa' is not a valid HTTP header field value.
at angular.js:10990
at forEach (angular.js:355)
at angular.js:10988
at sendReq (angular.js:10841)
at serverRequest (angular.js:10551)
at processQueue (angular.js:15122)
at angular.js:15138
at Scope.$eval (angular.js:16384)
at Scope.$digest (angular.js:16200)
at Scope.$apply (angular.js:16492)

我在getHeader()函数中添加了“ Content-type”,但由于土耳其字符而无法正常工作。 当我从mongoDB将'ŞanlıUrfa'的值更改为'SanliUrfa'时,该服务正常工作。 但是我想在标题中使用土耳其语字符。 我该如何处理这个问题。 感谢帮助...

我在PlateBusiness的后端功能:

exports.getCompletedPlateReq = function (req, res) {
const query = PlateRequest.find();
query.where('process').equals('produced_montaged');
query.where('is_deleted').ne(1);
if (req.headers.region !== undefined)
    query.where('region').equals(req.headers.region);
if (req.headers.branch !== undefined)
    query.where('branch').equals(req.headers.branch);
query.where('status').equals(1);

query.exec(function (err, data) {
    if (err) return res.status(500).send(err);
    return res.status(200).send(data);

});

}

路由器部分是:

app.get('/get/reqplate/completed', requireAuth, PlateBusiness.getCompletedPlateReq);

似乎您需要在正文中传递某些内容才能使用标头的内容类型。 试试这样。

$http({
    url: '/client/get/reqplate/completed',    
    method: 'POST',
    data: '',
    headers: {
        "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8",
         ...
    }

}).success(function(response){
    //consume success response
}).error(function(error){
    //consume error response
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM