2013-07-15 4 views
1

일부 short-polling ajax() - play2.1-server에 요청하여 일부 이상한 오류가 발생했습니다.비 결정적 parsererror

현재 서버에 요청을 보내기 위해 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 + ")"); 
    } 

서버는 항상 같은 (정정) JSONP 문자열을 전송 피들러 웹 디버거에 따르면. 그리고 클라이언트의 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 

난 항상 당신이 대신 JSONP 사용해야 말했다 내 코드와 나는 parsererror에 대해 발견 된 다른 게시물 뭐가 잘못 됐는지 모르겠어요 json. 그게 내가 한 짓이야, 그렇지?

답변

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

'success'는 문자열이 아닌 함수 여야하지만'jsonpCallback'은 문자열이 될 수 있습니다. doc에서 : "JSONP 요청에 대한 콜백 함수 이름을 지정하십시오.이 설정에 함수를 사용할 수도 있습니다.이 경우 jsonpCallback의 값은 해당 함수의 반환 값으로 설정됩니다." http://api.jquery.com/jQuery.ajax/ –

+0

@JasonP 고마워요. 그는 두 가지 목적으로 동일한 콜백 함수를 사용하면 안된다고 생각합니다. 일반적으로 jQuery는 내부 JSONP 콜백 함수를 사용한다. – Barmar

+0

빠른 응답을 보내 주셔서 감사합니다. 나는 그것을 시도 할 것이다. – user2584032

관련 문제