首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用ClojureScript的AJAX请求在Chrome上有时有nil作为参数

使用ClojureScript的AJAX请求在Chrome上有时有nil作为参数
EN

Stack Overflow用户
提问于 2013-12-18 03:20:57
回答 1查看 353关注 0票数 1

编辑

下面是一个包含最小示例的JSFiddle。问题是,在Firefox中,我在哪里点击按钮并不重要。事件的目标始终是按钮。

另一方面,在Chrome中,如果我点击跨度,事件的目标是跨度,而不是按钮。

这是预期的行为吗?

原创

我在客户端使用clojurescript用clojure编写了一个小webapp,其中包含以下路径:

代码语言:javascript
复制
(POST "/admin/delete-user" {p :params}
        (println (str "Deleted User: "(pr-str (:username p))))
        (db/delete-user (:username p))
        "Expected return value")

一个页面包含以下按钮:

代码语言:javascript
复制
<button class="delete btn" data-delete="USERNAME">...</button>

此按钮与以下ClojureScript配合使用:

代码语言:javascript
复制
(listen!
   (by-class "delete")
   :click (fn [evt]
            (let [target (evt/target evt)
                  username (:data-delete (attrs target))]
              (POST "/admin/delete-user"
                    {:format :edn
                     :params {:username username}
                     :handler (fn [resp]
                                (log "User deleted")
                                (load-user-table))
                     :error-handler (fn [resp] (log "Error during user deletion"))})
              (log "User " username))))

我使用domina处理dom操作和事件处理,使用cljs-ajax处理ajax请求。代码是在我的lein cljsbuild设置中使用advanced优化进行编译的。

在火狐上,这段代码运行得很好,但是当我在Chrome中使用我的代码时,我“有时”会得到这样的行为:按钮nildata-delete属性中的用户名被用作参数。

当此行为发生时,我可以重复单击该按钮,但没有任何反应。然后,在点击几次之后,它就可以工作了。

我还检查了cosole输出,没有出现错误,并且在记录"User“后没有显示任何内容,因此username必须为null

在Chrome中username怎么可能是空的?

EN

回答 1

Stack Overflow用户

发布于 2013-12-18 18:21:17

我发现了问题:

我必须使用current-target而不是(target evt)。在火狐中,点击事件是在span上Chrome的button上触发的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20642812

复制
相关文章

相似问题

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