2011-12-26 4 views
1

This question은 내가 뭘하려고 노력하고 있는지에 대한 해답을 갖고있는 것처럼 보이지만 저에게는 효과적이지 않습니다. 서블릿은 잘 게시하고 시계 창에서 서블릿 의 _parameters 멤버 변수에 대한 json 객체를 볼 수 있지만 매개 변수를 가져올 수 없습니다.서블릿에서 JSON 문자열을 읽는 방법

여기 내 코드입니다.

자바 스크립트 :이

// build data from input fields 
var jsondata = '{"author":"TEST", "title":"XYZ"}'; 

$.ajax({ 
    type : 'POST', 
    dataType : 'json', 
    data: jsondata, 
    url : '/submitquote', 
    timeout : 5000, 
    success : function(data, textStatus) { 
     // whatever 
    }, 
    error : function(xhr, textStatus, errorThrown) { 
     // whatever 
    } 
}); 

서블릿 (나는 또한 "작가"와 "제목"아무것도하지만 시도는 다시 온다) :

// get data 
String postData = req.getParameter("jsondata"); 

이 내가 변수를 사용하여 볼 것입니다 요청 개체에 _parameters을 주시하십시오 :

{{"author":"TEST", "title":"XYZ"}=} 

어떻게 그 물건을 꺼내나요?

도움을 주시면 감사하겠습니다.

답변

4

첫째는 datatype 인수는 데이터 유형이 나오고 지정되지 않은 데이터는

둘째는 data 인수는 매개 변수의 사전을 제공해야합니다.에 가고,이 경우 매개 변수 중 하나는이다 이미도 캐릭터 라인 JSON 객체 : 이제

var jsondata = {"author":"TEST", "title":"XYZ"}; 

$.ajax({ 
    type : 'POST', 
    dataType : 'json', 
    data: { jsondata : JSON.stringify(jsondata)}, 
    url : '/submitquote', 
    timeout : 5000, 
    success : function(data, textStatus) { 
     // whatever 
    }, 
    error : function(xhr, textStatus, errorThrown) { 
     // whatever 
    } 
}); 

, req.getParameter("jsondata")은 (여전히-JSON은-도 캐릭터 라인) 데이터를 가지고 있으며, 당신은 스스로를 구문 분석 할 필요가있다. JSON.org을 사용하면 아주 멋진 라이브러리를 만들 수 있습니다.

두 더 노트 :

  1. 여기에 두 개의 "jsondata"이 있습니다. 첫 번째 JavaScript 변수는 첫 번째 줄에 할당되고 stringify 호출 내에서 사용됩니다. second는 data: { 바로 뒤에 지정되고 getParameter 호출에 사용되는 Ajax 매개 변수 이름입니다.
  2. "저자"와 "제목"을 전달하는 경우 JSON에 관한 모든 것을 잊어 버리고 원래의 자바 스크립트 인 req.getParameter("author")req.getParameter("title")을 사용할 수 있습니다.
+0

감사합니다. 지금 json으로 param을 얻을 수 있습니다. 메모 2)에서 "저자"및 "제목"에 대한 코드 및 쿼리를 사용할 수 있다고 말했지만, 시도했지만 작동하지 않는 것 같습니다. 내 코드에서 왜 그런지 알 수 있습니까? – JohnIdol

+0

아, 제가 원래 코드를 잘못 읽었습니다 : 객체 주위에 작은 따옴표가 있습니다 (지금 예제에서는 제거되었습니다). 정확하게 stringify 함수가 수행해야하는 것입니다. JSON (좀 더 일반적이지만 더 복잡한 솔루션)을 사용하려면 stringify 함수를 사용해야하며 string 매뉴얼을 생성하지 않아야합니다. 개별 매개 변수 (더 많은 HTTP-y 솔루션)를 사용하려면'getParameter() '를 사용하여 따옴표를 빼고 매개 변수에 직접 액세스하십시오. – Malvolio

+0

모든 도움을 주셔서 감사합니다. 나는 대답 한 질문을 고려한다. json 객체를 파싱하는 데 문제가 있습니다 ... 아마도 다른 q를 요청하고 아래 링크를 게시 할 것입니다. – JohnIdol

관련 문제