2013-12-24 2 views
0

다음 Yesod 코드를 사용하여 Json POST 요청의 응답 본문을 구문 분석하려고합니다. 내 자바 스크립트에서Yesodod로 JSON을 구문 분석 할 때 "충분하지 않은 바이트"진단

import qualified Data.Aeson as J 
postMypageR = do 
    json <- parseJsonBody :: Handler (J.Result J.Value) 
    case json of 
     J.Error e -> error(show e) 
     J.Success code -> do 
     liftIO $ putStrLn $ show code 
     defaultLayout $ myWidget 

, 나는 xmlhttp.send(JSON.stringify({a:3, b:4}));

와 파이어 폭스 웹 콘솔은 POST로 전송되는 문자열이 {"a":3,"b":4} 것을 확인 보낼 수 있습니다.

내가 코드를 실행할 때, 나는 다음과 같은 오류 얻을 : 이런 일이 될 이유 ParseError {errorContexts = [\"demandInput\"], errorMessage = \"not enough bytes\", errorPosition = 1:1}"

아무도 알고 있나요을? 내 GET 및 POST는 다른 페이지에서 모두 작동하지만, 지금까지 POST 본체를 실제로 본 내 앱의 유일한 장소입니다.

+1

는'errorPosition = 1 같은데

xmlhttp.setRequestHeader("Content-length", data.length); 

는 : 1 '은 전혀 입력을받지 말한다. Yesod의 문제 추적기를 사용해보십시오. –

+0

오케이. Yesod recieves 입력을 기록/인쇄하는 방법을 알고 있습니까? – jmite

답변

3

내 생각 엔 자바 스크립트 오류입니다 .... 보내기 전에 콘텐츠 길이를 설정 했습니까? data=JSON.stringify({a:3, b:4})

+0

아, 아마도 그럴거야. 나는 JS에 관해서 완전한 초보자이다. 감사! – jmite

+0

그것을 알아 냈습니다. Javascript에서 내 Send 버튼을 게시하고 양식을 제출하여 데이터를 전송 한 다음 빈 문자열이있는 POST를 다시 보냈습니다. – jmite

관련 문제