2015-03-10 3 views
3

Я абсолютно не знаком с angular.js, поэтому извиняюсь за такой глупый вопрос. Но, возможно, это поможет немного другим начинающим.Angular.js добавляет базовый путь к абсолютному пути URL

Я изучаю примерный проект, созданный кем-то другим, но я использую локальный IIS (вместо IIS Express или VS dev. Server). Так что мой базовый путь http://localhost/SampleProject

Пример проекта содержит это $ http.get

$http.get('https://maps.googleapis.com/maps/api/geocode/json', 
      { 
       params: params, 
       headers: { 'Accept-Language': 'en' } 
      } 
     ) 

Это работает на базе URL, как "http://localhost:1234", но в моем случае я получаю

Failed to load resource: the server responded with a status of 400 (Bad Request)

, поскольку URL-адрес запроса:

http://localhost/SampleProject/https://maps.googleapis.com/maps/api/geocode/json?sensor=false

Может ли кто-нибудь сказать мне, почему angular.js добавляет базовый url, даже если используется абсолютный URL-адрес пути?

Спасибо, Том

+1

Вы можете воссоздать проблему на Plunker? –

+0

Я пробовал ... http://plnkr.co/edit/9MDXc3USNlRsiy1yYu17?p=preview Но он не знает $ http. – Tomino

+0

Это работает в учебнике w3shool, но не в Plunker http://plnkr.co/edit/PaUHrG6WrMaTB4WVjpyX?p=preview – Tomino

ответ

1

Ничто не связанно с $ HTTP

С 1.3, Угловой не позволяют глобальный переменный контроллера.

Вот рабочая версия: 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; 
     }); 
    }); 
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; 
     } 
    }; 
}]); 
Смежные вопросы