17

我想在 angularjs 中更改 post['Content-Type'] 所以我使用

  app.config(function($locationProvider,$httpProvider) {
$locationProvider.html5Mode(false);
$httpProvider.defaults.useXDomain = true;
delete $httpProvider.defaults.headers.common['X-Requested-With'];
$httpProvider.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded;        charset=UTF-8';
 });

事件是

     $http.post("http://172.22.71.107:8888/ajax/login",{admin_name:user.u_name,admin_password:user.cert})
        .success(function(arg_result){

            console.log(arg_result);


        });
};

但是结果是

Parametersapplication/x-www-form-urlencoded
{"admin_name":"dd"} 

我想要的是

Parametersapplication/x-www-form-urlencoded
 admin_name dd

那我该怎么办?

4

4 回答 4

28

试试看:

var serializedData = $.param({admin_name:user.u_name,admin_password:user.cert});

$http({
    method: 'POST',
    url: 'http://172.22.71.107:8888/ajax/login',
    data: serializedData,
    headers: {
        'Content-Type': 'application/x-www-form-urlencoded'
    }}).then(function(result) {
           console.log(result);
       }, function(error) {
           console.log(error);
       });
于 2013-07-12T08:23:50.377 回答
6
angular.module('myApp', [])
        .config(function ($httpProvider) {
            $httpProvider.defaults.headers.put['Content-Type'] = 'application/x-www-form-urlencoded';
            $httpProvider.defaults.headers.post['Content-Type'] =  'application/x-www-form-urlencoded';
        })
于 2015-02-20T11:56:26.397 回答
2

OP 正在使用Content-Type : application/x-www-form-urlencoded,因此您需要使用$httpParamSerializerJQLike将帖子数据从 JSON 更改为字符串

注意:没有data属性但是是params属性

$http({
            method: 'POST',
            url: 'whatever URL',
            params:  credentials,
            paramSerializer: '$httpParamSerializerJQLike',
            headers: {'Content-Type': 'application/x-www-form-urlencoded'}
        })

此外,您可以注入序列化程序并通过data属性显式使用它

.controller(function($http, $httpParamSerializerJQLike) {
....
$http({
        url: myUrl,
        method: 'POST',
        data: $httpParamSerializerJQLike(myData),
        headers: {
          'Content-Type': 'application/x-www-form-urlencoded'
        }
     });
于 2016-08-04T10:32:21.120 回答
-3

看看这个: 如何将数据作为表单数据而不是请求有效负载发布?

或者,您可以执行以下操作:

$http.post('file.php',{
        'val': val
    }).success(function(data){
            console.log(data);
        });

PHP

$post = json_decode(file_get_contents('php://input'));
$val = print_r($post->val,true);
于 2013-07-12T08:10:47.407 回答