为什么这个dijit.form没有提交?

时间:2012-08-30 08:13:48

标签: javascript forms dojo

为什么这个表单不会提交?

<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:

    <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>

也许这是一个愚蠢的问题,但我已经看了好几个小时但仍然无法弄明白。 提前致谢

1 个答案:

答案 0 :(得分:0)

我不确定你会遇到什么不会提交。我将您的代码移动到JS Bin(http://jsbin.com/iziwen/1/edit)并且工作正常:

enter image description here

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

如果这样做无效,请指明不会更准确地提交

编辑:我没有使用multipart/form-data提交功能,我只是抓取表格数据并通过XHR将这些数据发送到我的网络服务,但我看看提交功能的工作原理和看来你需要一个dijit/form/Form来使用提交功能。所以我改变了这一点:

一个。表单定义 - <iframe>指向iframe ID:

target:"formSubmitIframe"

B中。添加了iframe:

<form
    id="myForm"
    data-dojo-id="myForm"
    data-dojo-type="dijit/form/Form"  
    data-dojo-props="action:'Cart.php', method:'post', target:'formSubmitIframe'"
>

一切正常后,将<iframe name="formSubmitIframe" src="about:blank"></iframe> 添加到iframe以隐藏它。

在JS Bin中查看它:http://jsbin.com/iziwen/7/edit

N.B。:我不建议以这种方式提交表单。如果您不需要跨域或发送文件,只需通过style="display:none;"获取表单数据,这样您就可以使用JSON格式化表单数据,然后通过var data = dijit.byId("myForm").get("value")dojo/xhr发送它们(对于道场1.8 +)。

此外dojo/request只需向其提供表单ID即可发送表单 - 这是一个很好的示例:http://livedocs.dojotoolkit.org/dojo/xhr