2013-12-24 51 views
0

我想解析一個Json POST請求的響應正文,使用以下Yesod代碼。當解析JSON與Yesod診斷「沒有足夠的字節」

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 

在我的JavaScript,我送與xmlhttp.send(JSON.stringify({a:3, b:4}));

Firefox的Web控制檯確認發送到POST字符串是{"a":3,"b":4}

然而,當我運行代碼,我得到以下錯誤:ParseError {errorContexts = [\"demandInput\"], errorMessage = \"not enough bytes\", errorPosition = 1:1}"

是否有人知道爲什麼會發生?我的GETs和POSTs都在其他頁面中工作,但這是我應用程序中唯一一個到目前爲止我真正查看POST正文的地方。

+1

貌似'errorPosition = 1:1'說,它沒有收到輸入的。嘗試Yesod的問題跟蹤器。 –

+0

好的。你知道如何登錄/打印Yesod收到的輸入嗎? – jmite

回答

3

我的猜測是,這是一個JavaScript錯誤....您是否在發送之前設置了內容長度?

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

其中data=JSON.stringify({a:3, b:4})

+0

啊,這可能是吧。當談到JS時,我是一個完全的新手。謝謝! – jmite

+0

想通了。我有我的發送按鈕從Javascript發佈,並作爲表單提交,所以它發送數據,然後重新發送一個空字符串的POST ...哎呀。 – jmite

相關問題