2016-08-16 11 views
-1

少し問題があります。私はangularjs単一のWebアプリケーションのページで作業していると私は角度モジュールでSockJSを追加しようとしています。AngularJS ng-viewの位置0のJSONの予期しないトークン<

これは私のメインページです。

<html ng-app="myApp"> 
    <head> 
     <title>Timeline Page</title> 
     <meta charset="utf-8"> 
     <link href="http://fonts.googleapis.com/css?family=Open+Sans:400,300,600,700&subset=all" rel="stylesheet" type="text/css" /> 
     <link href="css/bootstrap.min.css" rel="stylesheet" type="text/css" /> 
     <link href="css/bootstrap-switch.min.css" rel="stylesheet" type="text/css" /> 
     <link href="css/components.min.css" rel="stylesheet" id="style_components" type="text/css" /> 
     <link href="css/plugins-md.min.css" rel="stylesheet" type="text/css" /> 
     <link href="css/layout.min.css" rel="stylesheet" type="text/css" /> 
     <link href="css/light.min.css" rel="stylesheet" type="text/css" id="style_color" /> 
     <link href="css/custom.min.css" rel="stylesheet" type="text/css" /> 
    </head> 
    <body class="page-container-bg-solid page-md"> 
     <div ng-view></div> 
    </body> 
    <script type="text/javascript" src="js/lib/angular.min.js"></script> 
    <script type="text/javascript" src="js/lib/angular-route.min.js"></script> 
    <script type="text/javascript" src="js/app.js"></script> 
    <script type="text/javascript" src="js/lib/sockjs-0.3.4.js"></script> 
    <script type="text/javascript" src="js/lib/stomp.js"></script> 
</html> 

これはjsのコードです。私はこれをしようとすると

var myApp = angular.module('myApp', ['ngRoute', 'myApp.controllers', 'myApp.services', function() { 
     var socket = new SockJS('/hello'); 
     stompClient2 = Stomp.over(socket); 
     stompClient2.connect({}, function (frame) { 
      con = true; 
      console.log('Connected: ' + frame); 
      stompClient2.subscribe('/topic/greetings', function (greeting) { 
       showGreeting(JSON.parse(greeting.body).content); 
      }); 
     }); 
    }]); 

、私はこの問題を持っている:

Uncaught SyntaxError: Unexpected token < in JSON at position 0 

私は多くのページを持っていると私は私がページを開いたときに1つのソケットを開きたいが、それは働いていません。誰でも私を助けることができますか?

EDIT Greeting.class

public class Greeting { 

    private String content; 

    public Greeting(String content) { 
     this.content = content; 
    } 

    public String getContent() { 
     return content; 
    } 

} 

GreetingController.class

@Controller 
public class GreetingController { 

    @MessageMapping("/hello") 
    @SendTo("/topic/greetings") 
    public Greeting greeting(HelloMessage message) throws Exception { 
     //Thread.sleep(1000); // simulated delay 
     return new Greeting("Hello, " + message.getName() + "!"); 
    } 

} 
+1

'greeting'の内容をログに記録できますか? –

+0

問題が解決しました。それは単なる秘密の問題だった。 –

答えて

-1

無効なJSONレスポンスを持っている必要があります。 JSON.parseを削除すると、このエラーを回避できます。しかし、おそらくサーバー側で作業する必要があります。

JSON Lintを使用して、応答JSONを確認できます。 greeting.bodyから戻って来ているものは何でもあるかのように思え

var myApp = angular.module('myApp', ['ngRoute', 'myApp.controllers', 'myApp.services', function() { 
     var socket = new SockJS('/hello'); 
     stompClient2 = Stomp.over(socket); 
     stompClient2.connect({}, function (frame) { 
      con = true; 
      console.log('Connected: ' + frame); 
      stompClient2.subscribe('/topic/greetings', function (greeting) { 
       showGreeting(greeting.body); 
      }); 
     }); 
    }]); 
2

有効 JSON文字列ではありません。

エラーが0の位置に<があるとすれば、私は、htmlが偶然にあなたのAPIから戻ってくると思います。

+0

1つのページで異なるプロジェクトで同じコードを試してみましたが、これはうまく動作しますが、このような単一のWebページアプリケーションを試してみると、動いていない。私はそれが事実だとは思わない。 –

+0

@Gürselは 'greeting.body'にあるものをログアウトします... – Neal

+0

私はクラスを追加しました。 –

関連する問題