0

是否可以在 Dojo 中创建仅限 Ajax 的表单?我需要在按钮单击/ENTER 时发出 AJAX 请求,而不是刷新整个页面。

这是我的简单对话内容:

<div id="myDialog">
  <table>
    <tr>
      <td>Name</td>
      <td><input name="name" type="text"/></td>
    </tr>
    <tr>
      <td>Owner</td>
      <td><input name="owner" type="text"/></td>
    </tr>
  </table>
  <div class="buttons">
     <button class='ok'>OK</button>
     <button class='cancel'>Cancel</button>
  </div>
</div>  

我将其转换为形式:

form = new Form({action: okAction, method: ''}, dojo.byId('myDialog'))

问题是,在创建 Dojo 表单后,我对按钮的操作不再被调用,而是单击其中任何一个或按 ENTER 会导致页面刷新。

是否可以将 AJAX 请求与表单绑定,而不是整个页面提交?在 JSF2 中它是这样运行的。

我不喜欢在 AJAX 应用程序中使用表单,但我想使用 Dojo 验证。

4

2 回答 2

1

action属性表示您提交页面,导致页面完整刷新(取决于您的返回值okAction)。如果要创建客户端表单提交,则需要使用onSubmit事件处理程序,例如:

form.onSubmit = function(event) {
    // Do this stuff
};

您的事件处理程序可能会包含一个 AJAX 请求,就像 @James Jithin 在他的回答中描述的那样。

您可以在API 文档中阅读有关事件处理程序的更多信息。

于 2013-10-11T09:44:39.890 回答
0

您可以使用 dojo 获取或发布表单。请参阅 xhr 调用期间设置的表单属性。

dojo.xhrPost

在这里,您可以传递表单的 id 并将其提交给服务器。然后在 onLoad 上,您可以决定如何处理响应。

于 2013-10-11T09:04:30.627 回答