1

play2.1 サーバーに対してショート ポーリングの ajax() リクエストを実行すると、奇妙なエラーが発生しました。

現在、REST を使用してサーバーにリクエストを送信しており、json を応答として待っています。サーバーは常に正しい JsonP を応答しますが、しばらくするとクライアントは「parsererror」を受け取り、後続のすべての要求に対して ajax-callbackmethod の呼び出しを停止します。

クライアント:

   function restGet(url, callback) {
       $.ajax({
          type: 'GET',
          url: 'www. ... /getQuestions/42',
          dataType: 'jsonp',
          jsonpCallback: 'callbackMethod',
          success: 'callbackMethod',
          error: function (jqXHR, status, exception) {
              console.log('jqXHR: ' + JSON.stringify(jqXHR));
              console.log('restGet error: ' + status + ' - ' + exception);
          }
      });
   }


  function callbackMethod(response) {
       console.log('At callbackMethod(' + JSON.stringify(response) + ')');

  }

サーバー:

    public static Result getQuestions(String lectureId) {
        String callbackMethod = request().getQueryString("callback");
        String json = "{\"question\":\"Do you find my error?\"}";
        return ok((callback == null)?json:callback + "("+ json + ")");
    }

Fiddler Web Debugger によると、サーバーは常に同じ (かつ正しい) jsonp-string を送信します。クライアントからの restGet-Method は毎秒呼び出されます。

クライアントは、クラッシュするとすぐに次のメッセージを出力します。

[17:46:24.036] jqXHR: {"readyState":4,"status":200,"statusText":"success"}

[17:46:24.036] restGet error: parsererror - Error: callbackMethod was not called

私のコードの何が問題なのかわかりません.parsererrorについて見つけた他の投稿では、jsonの代わりにjsonpを使用する必要があると常に言われていました。それが私がしたことですよね?

4

1 に答える 1