Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Haskell Scotty和Angularjs:jsonData函数停止解析使用$http.post()发送的json数据_Json_Angularjs_Haskell_Scotty - Fatal编程技术网

Haskell Scotty和Angularjs:jsonData函数停止解析使用$http.post()发送的json数据

Haskell Scotty和Angularjs:jsonData函数停止解析使用$http.post()发送的json数据,json,angularjs,haskell,scotty,Json,Angularjs,Haskell,Scotty,我有一个Haskell/Scotty应用程序,前端是Angularjs。它在JSON解析方面工作完美。然后它突然无缘无故地停了下来。它发生在一些Scotty和它的依赖版本碰撞之后 解析JSON主体的scotty jsonData函数没有太多错误反馈。 目前没有来自Angular work的POST请求。我不知道发生了什么事。 我不知道哪一个代码示例会有用,因为任何JSON帖子都会使用jsonData-没有解析错误。这就是我能得到的。下面是一些代码示例 这是传递简单用户名和密码的控制器 .cont

我有一个Haskell/Scotty应用程序,前端是Angularjs。它在JSON解析方面工作完美。然后它突然无缘无故地停了下来。它发生在一些Scotty和它的依赖版本碰撞之后

解析JSON主体的scotty jsonData函数没有太多错误反馈。 目前没有来自Angular work的POST请求。我不知道发生了什么事。 我不知道哪一个代码示例会有用,因为任何JSON帖子都会使用jsonData-没有解析错误。这就是我能得到的。下面是一些代码示例

这是传递简单用户名和密码的控制器

.controller('AuthCtrl', function($scope, authS, $rootScope) {
  $scope.auth = {local: false, uname: "", pass: ""};
  $scope.login = function() {
    authS.login($scope.auth);
  }
  $scope.logout = function() {
    $rootScope.user.uname = "";
    authS.logout();
  }
这是将POST请求JSON数据发送到Scotty后端的服务

.factory('authS', function($http, $location, flashS, $rootScope) {
  return {
    login: function (d) {
      $http.post("/api/login", d)
      .success(function() {
        $rootScope.user.uname = d.uname;
        flashS.set("Login Success!", 'green');
        $location.path('/home');
      })
      .error(function() {
        flashS.set("Login Failure!", 'red', true);
      });
    })
这是修改的Scotty route函数,用于尝试捕获异常错误

post "/api/login" $ loginUser `rescue` \e -> do
    b <- decodeUtf8 <$> body
    error $ unpack $ mconcat [ "Error was: ", e, "\n"
                             , "Body was:  ", b, "\n"
                             ]

除了j之外,我不会使用POSTMan chrome插件、curl、Charles Web调试代理或网络面板来调试问题,以获取更多信息。不是同样的问题,但这里也有类似的问题@shaunhusain查看Chromes控制台,它显示了正确的帖子标题和正文。但从斯科蒂的角度看,我的身体好像是空的。我删除了jsonData函数,只是想打印主体-我什么也没有得到。奇怪。是的,很抱歉不熟悉haskell或scotty,所以不确定向您指出进一步调试的位置
--------------------------------------------------------------------------------------
-- | Manage user login
loginUser :: ActionD ()
loginUser = do
  j <- jsonData
  error "passed the problem ..."
  let h = jdataDoc j
      u = at "uname" h
      p = at "pass" h
      l = at "local" h
  a <- if l then authDB u p else liftIO $ authAD u p
  if a then putInSession "uname" u else status unauthorized401
Error was: jsonData - no parse: 
Body was:  
loginUser :: ActionD ()
loginUser = do
  j <- body
  if not $ LBS.null j then error ("Body:" ++ (LBS.unpack j)) else error "No body"
POST /api/login HTTP/1.1
Host: 0.0.0.0:3000
Connection: keep-alive
Content-Length: 42
Accept: application/json, text/plain, */*
Origin: http://0.0.0.0:3000
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.120 Safari/537.36
Content-Type: application/json;charset=UTF-8
Referer: http://0.0.0.0:3000/login
Accept-Encoding: gzip,deflate
Accept-Language: en-US,en;q=0.8,ru;q=0.6,en-GB;q=0.4
Cookie: scottysid=1CVBcS09G4PKktG8XkyPHu8JjBj0FmhaltjmIprX
{"local":false,"uname":"Foo","pass":"Bar"}
Content-Type:text/plain; charset=utf-8
Date:Mon, 15 Sep 2014 07:40:45 GMT
Server:Warp/3.0.1.1