首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有反射/反射的XhrRequest

有反射/反射的XhrRequest
EN

Stack Overflow用户
提问于 2015-05-15 16:32:28
回答 2查看 1.1K关注 0票数 7

我想要执行一个基本的Ajax请求,仅此而已。

我使用reflex作为前端,Scotty用于后端。Firefox控制台告诉我请求是成功的,我看到了预期的结果。但是网站从Just "default"转向Nothing,而不是Just "success!"

下面是一个完整的最小示例:

代码语言:javascript
复制
import Reflex (holdDyn)
import Reflex.Dom (button, el, mainWidget, display)
import Reflex.Dom.Xhr (performRequestAsync, xhrRequest, decodeXhrResponse)
import Reflex.Class (tag, constant)
import Data.Default (def)

main :: IO ()
main = do
  mainWidget $ el "div" $ do
    buttonEvent <- button "click me"
    let defaultReq = xhrRequest "GET" "mystring" def  --served by Scotty
    asyncEvent <- performRequestAsync (tag (constant defaultReq) buttonEvent)
    buttonDyn <- holdDyn (Just "default") $ fmap decodeXhrResponse asyncEvent
    display buttonDyn

Scotty部分:

代码语言:javascript
复制
{-# LANGUAGE OverloadedStrings #-}
import Web.Scotty
import Network.Wai.Middleware.Static

main = scotty 3000 $ do
  middleware $ staticPolicy (noDots >-> addBase "/mnt/b/haskell/try-reflex/hello.jsexe")
  get "/" $ do
    file "/mnt/b/haskell/try-reflex/hello.jsexe/index.html"
  get "/mystring" $ html "success!"

因为调试工具告诉我请求是成功的,所以我怀疑这个错误接近decodeXhrResponse,但是我有点不知道该如何进行调试,因为它只是被编译成(不可读的) Javascript。

我使用来自GitHub的try反射Nix脚本来设置所有内容,并在Nix环境中使用ghcjs hello.hs进行编译。

编辑:添加curl的输出

代码语言:javascript
复制
$ curl -G http://localhost:3000/mystring
success!% 
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-05-17 18:36:08

#reflex-frp对freenode的帮助下,我找到了一个解决方案:用_xhrResponse_body替换decodeXhrResponse,并对默认字符串使用Text有效:

代码语言:javascript
复制
buttonDyn <- holdDyn (Just $ T.pack "default") $ fmap _xhrResponse_body asyncEvent

decodeXhrResponse期望有某种JSON,虽然我曾经尝试通过Scotty提供JSON,但它仍然没有工作。

票数 6
EN

Stack Overflow用户

发布于 2018-07-08 23:45:54

我编写了这个简化的助手函数,主要是从反射中检索远程URL:

代码语言:javascript
复制
curlGet :: MonadWidget t m => Text -> m (Event t Text)
curlGet url = do
  let req = xhrRequest "GET" url def
  pb <- getPostBuild
  asyncReq <- performRequestAsync (tag (constant req) pb)
  pure $ fmap (fromMaybe "Unknown error" . _xhrResponse_responseText) asyncReq
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30264504

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档