我是angular.js的新手,所以我很抱歉这样一个愚蠢的问题。但也许这会对其他一些乞讨者有所帮助。
我正在从其他人创建的示例项目中学习,但我使用的是本地IIS(而不是IIS Express或VS dev。服务器)。所以我的基本路径是http://localhost/SampleProject
示例项目包含此$ http.get
$http.get('https://maps.googleapis.com/maps/api/geocode/json',
{
params: params,
headers: { 'Accept-Language': 'en' }
}
)
这适用于基本网址,例如“http://localhost:1234”,但在我的情况下,我得到了
Failed to load resource: the server responded with a status of 400 (Bad Request)
因为请求网址是
http://localhost/SampleProject/https://maps.googleapis.com/maps/api/geocode/json?sensor=false
任何人都可以告诉我为什么即使使用绝对路径网址,angular.js还会预先设置基本网址?
谢谢, 汤姆
答案 0 :(得分:1)
与$ http
无关从1.3开始,Angular不允许全局变量控制器。
以下是工作版本: http://plnkr.co/edit/zGj4Ayy8NIplUva86NP6?p=preview
var app = angular.module('myApp', []);
app.controller('customersController',
function($scope,$http) {
var params = { address: "Zlin, Czech Republic", sensor: false };
$http.get("https://maps.googleapis.com/maps/api/geocode/json", {
params: params,
headers: { 'Accept-Language': 'en' }
}).success(function(response) {
$scope.names = response;
});
});
答案 1 :(得分:0)
我已经解决了这个问题。它是由错误的默认URL处理引起的。 我不得不添加
if (config.url.indexOf('http') !== 0 && config.url.indexOf('//' !== 0))
进入app.js文件:
app.config(["$httpProvider", function ($httpProvider) {
$httpProvider.interceptors.push('middleware');
}]);
app.factory('middleware', ['__baseUrl',
function (__baseUrl) {
return {
request: function (config) {
// handle absolute URL request
if (config.url.indexOf('http') !== 0 && config.url.indexOf('//' !== 0))
{
config.url = __baseUrl + config.url
}
return config;
}
};
}]);