0

私は、AngularJS とクライアント サーバー プログラミング全体を始めたばかりです。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";
    });
}
}

すべてのものがうまく機能することを確認しているだけですが、そうではありません。クライアントからサーバーにデータを送信しようとするたびに、すべて正常に動作します。しかし、最終的に、サーバーがクライアントに応答を送信すると、画面に常に「エラー」というアラートが表示されるため、.success() は呼び出されません。

なんで?誰かが私を助けることができますか?ありがとう。

4

1 に答える 1

0

Google Chrome でテストしている場合は、F12 を押して [コンソール] をクリックし、コントローラーの関数を呼び出すアクションを実行してください。おそらく、次のエラーに直面しているのではないでしょうか?

要求されたリソースに「Access-Control-Allow-Origin」ヘッダーがありません。したがって、オリジン「null」はアクセスを許可されていません

その場合は、次の手順を実行します。

1: Java コードで、静的ファイルの場所を設定します (main メソッドの最初の命令として以下の行を挿入します)。

externalStaticFileLocation("<complete-path-to-the-directory-in-which-your-html-page-is>");

2: JavaScript コードで、「/shortening」を「http://localhost:4567/shortening」に置き換えます。

3: ページ ファイルをダブルクリックしてブラウザで開く代わりに、ブラウザを開いて " http://localhost:4567/yourpagename.html "にアクセスします。

于 2015-10-30T16:49:47.430 に答える