代码之家  ›  专栏  ›  技术社区  ›  brg

以前在jsfiddle上工作的memberjs1.0-pre表单返回“error”:“请使用POST请求”

  •  0
  • brg  · 技术社区  · 13 年前

    此代码** http://jsfiddle.net/wagenet/ACzaJ/8/ **几天前还在工作,今天我回来的时候,它扔了 {“error”:“请使用POST请求”} ,当我点击时 “添加”按钮 jsfiddle editor.js也总是在这一行抛出异常: 函数stop(){cc=stop;throw StopIteration;}; 有人知道这个问题的原因吗。

    非常感谢

    更新

    请向下滚动查看我发布的许多更新,作为对Peter最初回答的补充。

    2 回复  |  直到 13 年前
        1
  •  2
  •   Peter Wagenet    13 年前

    这里有许多问题。

    1. 您实际上并没有使用1.0 pre,而是使用master。
    2. 在master中,您需要调用 App.initialize() 让事件侦听器工作
    3. 你不应该设置 {{action}} 按钮上的助手。表单视图已具有 submit 方法,当 提交 事件发生在表单上。
    4. 有一个问题 valueBinding 。这似乎是一个Ember错误,因为如果你删除 id="new-todo"
    5. 在解决了所有这些之后,我还看到了一个变形错误。我没有尝试调试比这更深入的内容,因为您现在可能只应该使用1.0 pre。
        2
  •  0
  •   Community Mohan Dere    5 年前

    更新1

    根据@Peter Wagenet下面的建议,该表单现在将条目或输入记录到控制台,但它不会显示在jsfiddle的结果部分,而是显示在jsfiddle结果部分或页面上的仍然是这个错误{“error”:“Please use POST request”}

    ** http://jsfiddle.net/ACzaJ/18/

    更新2

    在这把小提琴里, http://jsfiddle.net/ACzaJ/19/ ,我通过添加event.prventDefault()成功消除了此错误{“error”:“Please use POST request”};到Todos.TodoFormView中的提交操作。这允许我们使用任意视图方法作为操作处理程序。

    现有的问题是,表单的输入仅显示在控制台上,而不显示在jsfiddle结果部分,尽管结果部分没有显示错误,但更新后的fiddle的控制台中出现了一个新错误:

    未捕获错误:无法对不在DOM中的变形执行操作。

    最终解决

    我需要注释掉App.initialize(),它才能按预期工作,也可以参见Peter答案的第2点。这是工作小提琴** http://jsfiddle.net/ACzaJ/20/

    与上面的工作fiddle类似,但为文本字段指定了id=“new todo”,因此这意味着ember没有影响“id”的错误,请参阅Peter的第4点。 http://jsfiddle.net/ACzaJ/21/

    我不知道为什么使用App.initialize()会使应用程序无法工作,但我的猜测是,App.initilize可以与其他部分一起工作,如用于路由的路由器、把手上有{{outlet}}的ApplicationController和ApplicationView,这是我不需要的。

    终于彻底解决了

    ** http://jsfiddle.net/tQWn8/ ** http://jsfiddle.net/tQWn8/1/ (第二个链接适用于指定的id)。我能够让它与App.initialize一起工作。但我必须声明上面一段列出的所有组件,并将路由器传递给App.initilize,就像这个App.initization(路由器)一样。如果你不这样做,那么你会得到旧错误

    未捕获错误:无法对不在DOM中的变形执行操作。

    有关更多信息,请参阅emberjs初始化函数的文档:

    http://docs.emberjs.com/?#doc=Ember.Application&method=initialize&src=false

    非常感谢Peter Wagenet的指导