非确定性parsererror

时间:2013-07-15 15:50:44

标签: jquery ajax playframework ajax-polling

我通过做一些简短的轮询ajax() - 向play2.1服务器发出请求,遇到了一些奇怪的错误。

目前我正在使用REST向服务器发送请求,我等待json作为答案。服务器总是响应正确的JsonP,但在很短的时间后,客户端得到一个“parsererror”并停止为所有后续请求调用ajax-callback方法。

客户:

   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的其他帖子总是说你必须使用jsonp而不是json。这就是我做的,不是吗?

1 个答案:

答案 0 :(得分:0)

不应引用功能名称。

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