0

我刚刚开始使用 AngularJS 和客户端-服务器编程。我有我的 AngularJS 客户端和我的 Java 服务器(使用 SparkJava 框架制作)。

这是我的控制器代码片段:

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 项目的服务器代码

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";
    });
}
}

我只是在检查所有东西是否正常工作,但它们没有。每次我尝试从客户端向服务器发送一些数据时都可以正常工作。但最后,当服务器向客户端发送响应时,我的屏幕上总是出现警报“错误”,所以 .success() 它永远不会被调用。

为什么?有人能帮我吗?谢谢。

4

1 回答 1

0

如果您正在使用 Google Chrome 进行测试,请按 F12,单击“控制台”并执行调用控制器功能的操作。可能您正面临以下错误,不是吗?

请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,Origin 'null' 不允许访问

如果是这种情况,请执行以下操作:

1:在您的 Java 代码中,设置静态文件位置(插入下面的行作为 main 方法的第一条指令):

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

于 2015-10-30T16:49:47.430 回答