2012-05-29 4 views
1

문제가 있습니다. 내 서블릿에 전화를 걸려면 jQuery JSONP를 사용하는 양식을 제출해야합니다. 이 코드는 다른 도메인에 포함되어 있으므로 사용법이 다릅니다. 여기 자바 서블릿 응답에서 HTML 형식의 JSONP 렌더링

은 내 양식은 AJAX를 제출한다 :

<script src='http://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.min.js' type='text/javascript'></script> 
<script language='Javascript' type='text/javascript'> 
$(\"#form1\").submit(function(event) { 
    event.preventDefault(); 
    var $form = $(this), 
     choice2 = $form.find('input[name=\"personChoice\"]').val(), 
     url = $form.attr('action'), 
    $.ajax({ 
      data: {choice:choice2}, 
            url: url, 
            dataType: 'jsonp', 
      jsonp: 'callback', 
      jsonpCallback: 'updatePage' 
    }); 
}); 
function updatePage(renderHTML) { 
    alert(renderHTML); 
} 
</script> 

나는 request.getParameter가 ("콜백") updatePage으로 채워집니다 내 자바 서블릿에서 확인할 수 있습니다. Java Servlet 내에서 JSONP 형식의 응답을 되돌려 보내야합니다. 어떻게 그 일을합니까?

자바 서블릿 코드 : 나는 현재이 같은 정말 간단한 일이 나는 또한 JSON 콘텐츠 형식의 응답을 시도

 response.setContentType("text/javascript"); 
     PrintWriter out = response.getWriter(); 

     String renderHTML = "{ renderHTML = 'Successful'}"; 

     out.println(renderHTML); 

를 내 자바 스크립트 updatePage의 경고가 호출되지 않습니다.

jsonpCallback에서 자바 서블릿과 응답을 통한 트릭이 무엇입니까 ???

답변

1

JSONP 응답은 콜백과 함께 요청에 지정된 함수 호출 내에 랩핑되어야합니다.

callback({ renderHTML = 'Successful'}); 

이 같은

뭔가 일반적으로 필터에주의를 기울여야한다.

0

jsonpCallback 속성은 사용자가 생각하는 것과 다릅니다. jquery가 요청 URL의 일부로 사용할 문자열 (또는 문자열을 반환하는 함수)입니다. 해당 기능이 필요하지 않은 경우 false으로 설정할 수 있습니다. See the docs

응답 처리기를 설정하려면 'success'속성을 사용해야합니다. 이 같은 뭔가 :

$.ajax({ 
     data: {choice:choice2}, 
     url: url, 
     dataType: 'jsonp', 
     jsonp: 'callback', 
     jsonpCallback: false, 
     error: function(xhr, status, error) { 
      alert("error"); 
     }, 
     success: updatePage 
     }); 

또한, JSONP 사용하는 가장 좋은 콘텐츠 형식은 application/javascript입니다.

희망이 있습니다.

+0

의견을 주셔서 감사합니다 - 세미 콜리어를 트리거하려면 콜백 문자열이 필요합니다. 성공 아약스 속성에 대해 읽었습니다. – user82302124

+0

흠. 이것은 부분적으로는 경험이 없지만 jsonpCallback을 만들 때 해당 콜백 매개 변수를 필터의 '트리거'로 사용하고 싶습니다. 콜백 매개 변수가 무엇인지에 관계없이 (해당 내용과 관계없이) 해당 콜백 메소드 (이 경우 updatePage)에 대한 JSON 응답을 렌더링하려고합니다. 그 방법에 대한 경고를 볼 수 있으므로 전화가 다시 돌아 오는 것을 알 수 있습니다. 지금 내가 가진 문제는 전체 HTML 태그가 지정된 문자열을 가져 와서 div에서 업데이트를 응답으로 다시 전달하는 것입니다. Stringfy를 사용해야합니까? – user82302124

+0

마지막 한 개의 댓글 - 해당 콘텐츠 유형은 내가 가지고있는 한 가지 문제를 해결 한 것으로 보입니다. 감사! – user82302124