我目前正在尝试使用用户名和电子邮件在Dart中创建一个简单的表单以进行注册。
我找不到可以测试的完整 工作 示例。如果有人可以解释如何将下面的jQuery代码转换为Dart,我认为这将大大澄清事情。
我也见过Dart的FormData
课,但没有例子。任何帮助表示赞赏。
$("#submit").click( function() {
$.post( $("#myForm").attr("action"),
$("#myForm :input").serializeArray(),
function(info) {
$("#responseDiv").empty();
$("#responseDiv").html(info);
});
$("#myForm").submit( function() {
return false;
});
});
答案 0 :(得分:11)
首先导入两个库:
import 'dart:html';
import 'dart:convert';
然后我们定义一个序列化函数:
serializeForm(FormElement form) {
var data = {};
// Build data object.
form.querySelectorAll('input,select').forEach((Element el) {
if (el is InputElement)
data[el.name] = el.value;
});
return data;
}
它只是将表单序列化为Map
数据。我不知道Dart表单序列化器,可能有一些包用于此目的。请注意,上面的示例仅处理输入。
接下来我们假设以下HTML:
<form id="myForm" action="/bar">
<label>Foo:</label>
<input type="text" name="foo" value="bar" />
</form>
<button id="mySubmit">Send it</button>
最后我们的Dart客户端代码用于表单处理:
main() {
FormElement form = querySelector('#myForm');
ButtonElement button = querySelector('#mySubmit');
button.onClick.listen((e) {
var req = new HttpRequest();
req.onReadyStateChange.listen((ProgressEvent e) {
if (req.readyState == HttpRequest.DONE) {
print('Data submitted!');
}
});
req.open('POST', form.action);
req.send(JSON.encode(serializeForm(form)));
});
}
这应该让你开始。
您可能还想对表单使用Polymer。
答案 1 :(得分:0)
解决上面的例子。你也可以这样做。
main(){
var form = new FormData(query('#myForm');
var button = query('#mySubmit');
button.onClick.listen((e){
var request = new HttpRequest();
request.on.readyStateChange.add((HttpRequestProgressEvent e) {
if (request.readyState == HttpRequest.DONE) {
print('Data submitted!');
}
});
request.open('POST','http://localhost/form_info.php');
request.send(form);
});
}