首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么此dijit.form不提交?

为什么此dijit.form不提交?
EN

Stack Overflow用户
提问于 2012-08-30 16:13:48
回答 1查看 1.5K关注 0票数 0

为什么此表单不能提交?

代码语言:javascript
复制
<div data-dojo-type="dijit/form/Form" id="myForm" data-dojo-id="myForm"
encType="multipart/form-data" action="Cart.php" method="post">
<input type="text" name="searchName" 
data-dojo-type="dijit/form/TextBox"
data-dojo-props="trim:true, propercase:true" id="searchName" />
<input type="radio" data-dojo-type="dijit/form/RadioButton" name="sl" id="radioOne"    value="full"/> <label for="radioOne">Full</label>
<input type="radio" data-dojo-type="dijit/form/RadioButton" name="sl" id="radioTwo" value="short"/> <label for="radioTwo">Short</label>
Data Select
<select name="select1" data-dojo-type="dijit/form/Select">
<option  value="2">Data1</option>
<option  value="1">Data2</option>
</select>
<button data-dojo-type="dijit/form/Button" type="submit" name="submitButton"     value="Submit">Submit</button>
</div>

还有一些javascript:

代码语言:javascript
复制
    <script src="//ajax.googleapis.com/ajax/libs/dojo/1.8/dojo/dojo.js" data-dojo-config="parseOnLoad:true"></script>
    <script type="text/javascript">
dojo.require("dijit.form.Form");
dojo.require("dijit.form.Button");
dojo.require("dijit.form.TextBox");
dojo.require("dijit/layout/AccordionContainer"); 
dojo.require("dijit/layout/BorderContainer");
dojo.require("dijit/layout/ContentPane");
    </script>

也许这是一个愚蠢的问题,但我已经看了好几个小时了,还是想不出来。提前感谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-08-30 17:23:28

我不知道你遇到什么不会提交。我把你的代码移到了JS (http://jsbin.com/iziwen/1/edit)中,它工作得很好:

如果您在服务器端遇到问题,我建议您将encType="multipart/form-data"更改为enctype="application/x-www-form-urlencoded" (或者根本不使用它,因为它是默认值)-您不需要multipart/form-data,您不会发送文件(请参阅更多here)。

如果这不起作用,请指定不会更精确地提交。

编辑:我不使用dijit/form/Form提交功能,我只是抓取表单数据并通过XHR发送到我的web服务,但我看过提交功能是如何工作的,所以似乎你需要一个<iframe>来使用提交功能。所以这就是我所改变的:

A.表单定义- target:"formSubmitIframe"指向iframe id:

代码语言:javascript
复制
<form
    id="myForm"
    data-dojo-id="myForm"
    data-dojo-type="dijit/form/Form"  
    data-dojo-props="action:'Cart.php', method:'post', target:'formSubmitIframe'"
>

B.添加了iframe:

代码语言:javascript
复制
<iframe name="formSubmitIframe" src="about:blank"></iframe>

一旦一切正常,你可以将style="display:none;"添加到iframe来隐藏它。

在JS Bin中查看它的实际效果:http://jsbin.com/iziwen/7/edit

注意:我不建议用这种方式提交表格。如果您不需要跨域或发送文件,只需通过var data = dijit.byId("myForm").get("value")获取表单数据,因此您将拥有JSON格式的表单数据,然后通过dojo/xhrdojo/request (用于dojo 1.8+)发送它们。

此外,只需向dojo/xhr提供表单id,它就能够发送表单--这里有一个很好的示例:http://livedocs.dojotoolkit.org/dojo/xhr

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

https://stackoverflow.com/questions/12192599

复制
相关文章

相似问题

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