Недетерминированный parsererror

Я столкнулся с какой-то странной ошибкой при выполнении короткого опроса 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. И restGet-метод от клиента вызывается каждую секунду.

Клиент распечатывает следующее, как только он падает.

[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 ответ

Решение

Имена функций не должны быть в кавычках.

   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);
          }
      });
   }
Другие вопросы по тегам