400错误请求$ http发布方法

时间:2017-03-16 04:57:06

标签: javascript angularjs

使用以下代码时,我得到了

  

400 Bad request rest_missing_callback_params



$scope.signUp = function () {
    var data = {
    	email: $scope.email,
    	password: $scope.password,
    	first_name: $scope.fName,
    	last_name: $scope.lName,
    	username: $scope.uName,
    	billing: {
    		first_name: $scope.fName,
    		last_name: $scope.lName,
    		company: $scope.cName,
    		address_1: $scope.address1,
    		address_2: $scope.address2,
    		city: $scope.city,
    		state: $scope.state,
    		postcode: $scope.pcode,
    		country: $scope.country,
    		email: $scope.email,
    		phone: $scope.mobile,
    	},
    	shipping: {
    		first_name: $scope.fName1,
    		last_name: $scope.lName1,
    		company: $scope.cName1,
    		address_1: $scope.address11,
    		address_2: $scope.address12,
    		city: $scope.city1,
    		state: $scope.state1,
    		postcode: $scope.pcode1,
    		country: $scope.country1,
    	}
    }

    console.log(data)
    $http.post("https://www.colourssoftware.com/wordpress/wp-json/wc/v1/customers", {
    		headers: {
    			'Content-Type': 'application/json',
    			'Authorization': 'Basic ' + window.btoa("username:password")
    		},
    		data: data
    	})
    	.then(function (response) {
    		console.log(response)
    	}, function (response) {
    		console.log(response);
    	});
}




但是当我使用以下代码时,它会将数据发布到服务器。



var au = window.btoa("username:password"),
    req = {
    	method: 'POST',
    	url: 'https://www.colourssoftware.com/wordpress/wp-json/wc/v1/customers',
    	headers: {
    		'Content-Type': 'application/json',
    		'Authorization': 'Basic ' + au
    	},
    	data: data
    }

$http(req).then(function (response) {
	console.log(response)
}, function (response) {
	console.log(response);
});




这两者有什么区别?为什么会这样?

1 个答案:

答案 0 :(得分:1)

要获得最佳示例,您需要更改此内容:

$http.post("https://www.colourssoftware.com/wordpress/wp-json/wc/v1/customers", {
  headers: {
    'Content-Type': 'application/json',
    'Authorization': 'Basic ' + window.btoa("username:password")
  },
  data: data
})

对此:

$http.post("https://www.colourssoftware.com/wordpress/wp-json/wc/v1/customers", data, {
  headers: {
    'Content-Type': 'application/json',
    'Authorization': 'Basic ' + window.btoa("username:password")
  }
})

根据Angular $http文档(https://docs.angularjs.org/api/ng/service/ $ http#post)$http.post()有一个不同的方法签名(post(url, data, [config]);)而不是$http()({{ 1}})。