DOJO中 xhrPost 提交 dijit.form.Form

da_shuaiguo 2010-01-06 05:08:39
各位好!

在使用DOJO时遇到如下问题:
用xhrPost提交一个普通表单可以正常运行。代码片段如下:

<form id="categoryForm" action="addCategory">
<s:hidden id="id" name="id"/>
<label for="name">Name</label><input dojotype="dijit.form.TextBox" id="name" type="input" name="category.name"/>
<input type="submit" id="button" dojotype="dijit.form.Button" label="Add" />
</form>


dojo.connect(button, "onClick", function(event){
event.preventDefault();
event.stopPropagation();
var xhrArgs = {
form: dojo.byId("categoryForm"),
preventCache:true,
handleAs: "json",
load: function(data){

},
error: function(error){
alert(error.message);
}
}
var deferred = dojo.xhrPost(xhrArgs);


不过,当在<form>标签中加入dojotype="dijit.form.Form"属性以后,就出错了。

<form id="categoryForm" action="addCategory" dojotype="dijit.form.Form">
<s:hidden id="id" name="id"/>
<label for="name">Name</label><input dojotype="dijit.form.TextBox" id="name" type="input" name="category.name"/>
<input type="submit" id="button" dojotype="dijit.form.Button" label="Add" />
</form>


问题是,怎么用Ajax提交一个dijit.form.Form。

谢谢!
...全文
1195 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
da_shuaiguo 2010-01-08
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 fjb5926 的回复:]
我的还是1.2.3哈,刚才实际测试了一哈,确实是可以调的
[/Quote]
我现在是初学,还没有对性能方面做过研究。期待老手指教!
da_shuaiguo 2010-01-08
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 fjb5926 的回复:]
我的还是1.2.3哈,刚才实际测试了一哈,确实是可以调的
[/Quote]
恩,那这有可能是1.4中不能用了,或者是使用方法有所改变,也有可能是1.4的BUG。

我现在的解决方法是,在xhrArgs中不用form属性来指定Form,而是通过content属性来定义参数的Key,然后再通过DOM取得对应的值。
感觉比较麻烦。。。
fjb5926 2010-01-07
  • 打赏
  • 举报
回复
再问个题外话,我在项目中好多地方用了dojo控件,在ff中还可以,在IE中就感觉好慢哦,按照官方的方法压缩了也没很好解决,请问各位是否也是这种情况哦?
fjb5926 2010-01-07
  • 打赏
  • 举报
回复
我的还是1.2.3哈,刚才实际测试了一哈,确实是可以调的
da_shuaiguo 2010-01-07
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 fjb5926 的回复:]
如果不修改代码肯定要出错的,后观你已经转成dojo控件了,代码中应该改为:
....
var xhrArgs = {
        form: dijit.byId("categoryForm").domNode,
        preventCache:true,
.....
[/Quote]
多谢回答!
您说的这种方法我也曾经试过,但也会出错。
我用的是DOJO的1.4.0,请问您用的是什么版本?
另外,以上这个方法,您确实在实际使用中证明过是可行的吗?
请赐教!
fjb5926 2010-01-07
  • 打赏
  • 举报
回复
如果不修改代码肯定要出错的,后观你已经转成dojo控件了,代码中应该改为:
....
var xhrArgs = {
form: dijit.byId("categoryForm").domNode,
preventCache:true,
.....
da_shuaiguo 2010-01-07
  • 打赏
  • 举报
回复
无人回帖???

87,955

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧