我有一个记录列表,想要更新一个。当我单击一个时,它会显示一个表单,其中包含已使用JsonRest填充的所有输入字段。我已经编辑了字段,现在我想将它发送到服务器进行更新。 如何使用dojo发送对象?
我试过这样,但在控制器端,该值为空。
on(dom.byId("poolForm"), "submit", function(evt) {
var formObj = domForm.toObject("poolForm");
console.log(formObj);
request.post("/path/to/EditSubmit", {
data : formObj,
method : "POST"
}). then(function(data) {
console.log("data");
});
});
春天我用过:
public void editedForm(HttpServletResponse response, @RequestBody MyClass myClass) {
poolParam.getAdd();
}
答案 0 :(得分:1)
假设您正在创建新记录而不是更新记录,则可以使用方法add(object, options)
作为JsonRest
。
示例:
require(["dojo/store/JsonRest"], function(JsonRest){
// your store
var store = new JsonRest({
target: "/some/resource"
});
// add an object passing an id
store.add({
foo: "foo"
}, {
id: 1
});
});
可以在JsonRest API和JsonRest guide找到更多信息。
修改强>
至于您的评论请求,如果您想使用dojo/request/xhr
而不是JsonRest
发送对象,您可以使用以下示例,基本上:
使用dojo/dom-form
实用程序从表单中获取值。此实用程序函数将返回一个对象。 More info here
使用dojo/request/xhr
通过Ajax发送先前从dojo/dom-form
检索到的对象,这是发送到服务器的数据。 More info here
此处快速演示:
https://jsbin.com/mocoxuhotu/edit?html,output
<!DOCTYPE html>
<html>
<head>
<title></title>
<meta charset="utf-8" />
<link type="text/css" rel="stylesheet" href="https://ajax.googleapis.com/ajax/libs/dojo/1.10.0/dijit/themes/claro/claro.css">
<script data-dojo-config="async: 1" src="//ajax.googleapis.com/ajax/libs/dojo/1.10.4/dojo/dojo.js"></script>
<script>
require([
"dojo/query",
"dojo/dom-form",
"dojo/request/xhr",
"dijit/registry",
"dijit/form/Form",
"dojo/parser",
"dojo/domReady!"
], function (
query,
domForm,
xhr,
registry,
Form,
parser
) {
var form = new Form({}, 'myForm');
query("a.myLink").on("click", function () {
var data = domForm.toObject(form.domNode);
xhr.post("/echo/json", {
data: data // data to transfer
}).then(function () {
console.log("Success");
});
});
});
</script>
</head>
<body class="claro">
<form data-dojo-type="dijit/form/Form" id="myForm">
<fieldset>
<ul>
<li>
<label for="name">Name:</label>
<input type="text" name="name" />
</li>
<li>
<label for="firstname">First name:</label>
<input type="text" name="firstname" />
</li>
</ul>
</fieldset>
</form>
<a class="myLink">Submit the form</a>
</body>
</html>