Javascript 在JS对象中存储HTML表单输入
我知道这里有一个非常类似的问题,但我的对象层次结构与该问题中的不同 无论如何,我想将HTML表单输入数据存储到我的JavaScript对象中。这是我的HTML表单代码:Javascript 在JS对象中存储HTML表单输入,javascript,jquery,html,javascript-objects,Javascript,Jquery,Html,Javascript Objects,我知道这里有一个非常类似的问题,但我的对象层次结构与该问题中的不同 无论如何,我想将HTML表单输入数据存储到我的JavaScript对象中。这是我的HTML表单代码: <form id="newAuction"> <input id="title" name="title" required type="text" value="" /> <input id="edate" name="edate" required type="datetime"
<form id="newAuction">
<input id="title" name="title" required type="text" value="" />
<input id="edate" name="edate" required type="datetime" value="" />
<input id="minbid" name="minbid" required type="number" value="" />
<button class="btn btn-primary">Submit</button>
</form>
这就是我的JS对象的外观:
<script>
$(document).ready(function() {
var vm = {
auction: {},
productIds: []
};
//validation and posting to api
var validator = $("#newAuction").validate({
//assigning values
vm.auction.Title = document.getElementById('title').value;
vm.auction.MinBid = document.getElementById('minbid').value;
vm.auction.EDate = document.getElementById('edate').value;
vm.productIds.push(1);
submitHandler: function () {
$.ajax({
url: "/api/newAuction",
method: "post",
data: vm
})
.done(function () {
toastr.success("Auction Added to the db");
//setting the vm to a new vm to get rid of the old values
var vm = { auction: {}, productIds: [] };
validator.resetForm();
})
.fail(function () {
toastr.error("something wrong");
});
return false;
}
});
});
</script>
$(文档).ready(函数(){
var vm={
拍卖:{},
productId:[]
};
//验证和发布到api
var validator=$(“#新拍卖”).validate({
//赋值
vm.auction.Title=document.getElementById('Title')。值;
vm.auction.MinBid=document.getElementById('MinBid').value;
vm.auction.EDate=document.getElementById('EDate').value;
vm.productIds.push(1);
submitHandler:函数(){
$.ajax({
url:“/api/newAuction”,
方法:“张贴”,
数据:虚拟机
})
.done(函数(){
toastr.success(“将拍卖添加到db中”);
//将vm设置为新vm以除去旧值
var vm={auction:{},productid:[]};
validator.resetForm();
})
.fail(函数(){
犯错误(“出了什么事”);
});
返回false;
}
});
});
如您所见,我使用的是document.getElementById('title').value
获取值并分配它们,但我得到语法错误应为:逗号应为
不确定这是否重要,但这是在.NETMVC5项目中 将您的赋值代码集移动到submitHandler中。检查validate()的语法
将您的值分配代码集移动到submitHandler中。检查validate()的语法
乍一看,在发送JSON.stringify(vm)@DarrenSweeney否之前,您需要对数据进行字符串化。您不需要为jquery ajax请求对数据进行字符串化。
validate({…
-您正在传递一个要验证的对象,对象文本需要有键:值
对。您正在尝试编写普通代码。vm.auction…
您会看到以下代码行var validator=$(“#newAuction”)。验证({
,您正在创建一个对象,因此您必须遵循对象语法。不允许使用;
。因为文档上说是这样@DarrenSweeney。是的,他正在尝试重新创建JSON格式,但错误与他的问题所要求的完全不同,您需要在发送JSON.s之前对数据进行字符串化tringify(vm)
@DarrenSweeney不,您不需要为jquery ajax请求对数据进行字符串化。validate({…
)-您正在传递一个要验证的对象,一个对象文本需要有key:value
对。您正在尝试编写普通代码。vm.auction…
您看到这行代码var validator=$(“#新拍卖”)。验证({
,您正在创建一个对象,因此您必须遵循对象语法。不允许使用;
。因为文档上说是这样@DarrenSweeney。是的,他试图重新创建JSON格式,但错误与他问的问题完全不同!这就解决了问题。但现在我遇到了另一个错误。当我按下“提交”按钮,我在控制台中收到此错误New:92未捕获类型错误:无法设置未定义的属性“Title”
我是否声明vm
对象错误?它应该有两个属性。第一个是拍卖
对象。拍卖
将有以下属性:标题
,MinBid
,EDate
,然后是vm
的第二个属性,productIds
数组。它是一个简单的数组,存储1,2,3 etcinInitialize vm.auction={}在使用它之前;就是这样!谢谢!谢谢!修复了它。但是现在我得到了另一个错误。当我按下提交按钮时,我在控制台中得到了这个错误New:92 Uncaught TypeError:Cannot set property'Title'of undefined
我是否声明了vm
对象错误?它应该有两个属性。第一个是Auction
对象。Auction
将具有以下属性:Title
,MinBid
,EDate
,然后是vm
的第二个属性,productIds
数组。它是一个简单的数组,存储1,2,3 etcinInitialize vm.Auction={},然后再使用它;就是它了!谢谢!
<script>
$(document).ready(function() {
var vm = {
auction: {},
productIds: []
};
//validation and posting to api
var validator = $("#newAuction").validate({
//assigning values
vm.auction.Title = document.getElementById('title').value;
vm.auction.MinBid = document.getElementById('minbid').value;
vm.auction.EDate = document.getElementById('edate').value;
vm.productIds.push(1);
submitHandler: function () {
$.ajax({
url: "/api/newAuction",
method: "post",
data: vm
})
.done(function () {
toastr.success("Auction Added to the db");
//setting the vm to a new vm to get rid of the old values
var vm = { auction: {}, productIds: [] };
validator.resetForm();
})
.fail(function () {
toastr.error("something wrong");
});
return false;
}
});
});
</script>
//validation and posting to api
var validator = $("#newAuction").validate({
submitHandler: function () {
//assigning values
vm.auction.Title = document.getElementById('title').value;
vm.auction.MinBid = document.getElementById('minbid').value;
vm.auction.EDate = document.getElementById('edate').value;
vm.productIds.push(1);
$.ajax({
url: "/api/newAuction",
method: "post",
data: vm
})
.done(function () {
toastr.success("Auction Added to the db");
//setting the vm to a new vm to get rid of the old values
var vm = { auction: {}, productIds: [] };
validator.resetForm();
})
.fail(function () {
toastr.error("something wrong");
});
return false;
}
});