Я только начинаю с программирования AngularJS и Client-Server в целом. У меня есть клиент AngularJS и мой сервер Java (сделанный с помощью SparkJava Framework).
Это фрагмент кода моего контроллера:
var urlShortener = angular.module('urlShortener', []);
urlShortener.controller('shortenCtrl',
function($scope, $http){
$scope.longUrl = "";
$scope.shortening =
function(longUrl){
$http.get("http://localhost:4567/shortening", {params:{longUrl: longUrl}})
.success(function(response){
alert("success");
})
.error(function(response){
alert("error");
})
}
}
);
... и этот код сервера Maven Project
import static spark.Spark.*;
public class Server {
public static void main(String[] args) {
get("/shortening", (request, response) -> {
String longUrl = request.queryParams("longUrl");
System.out.println(longUrl); //This works fine
return "Yo";
});
}
}
Я просто проверяю, что все продукты работают хорошо, но они этого не делают. Каждый раз, когда я пытаюсь отправить некоторые данные от клиента на сервер, все работает нормально. Но в конце, когда сервер отправляет ответ клиенту, на моем экране всегда появляется предупреждение "error", поэтому.success() он никогда не вызывал.
Зачем? Кто-нибудь может мне помочь? Благодарю.
Если вы тестируете Google Chrome, нажмите F12, нажмите "Консоль" и выполните действие, которое вызывает функцию вашего контроллера. Вероятно, вы столкнулись со следующей ошибкой, не так ли?
В запрошенном ресурсе нет заголовка "Access-Control-Allow-Origin". Происхождение 'null', следовательно, не допускает доступа
В этом случае выполните следующие действия:
1: В вашем Java-коде установите статическое местоположение файла (вставьте первую строку в качестве первой инструкции для основного метода):
externalStaticFileLocation("<complete-path-to-the-directory-in-which-your-html-page-is>");
2: В вашем JavaScript-коде замените " http://localhost: 4567/shortening " на "/shortening"
3: Вместо двойного щелчка на вашем файле страницы, чтобы открыть его в браузере, откройте свой браузер и получите доступ к " http://localhost: 4567/yourpagename.html ".