我可以从文本区域获取文本/ val。但我试图从表单中获取输入。我已经阅读了很多文章来尝试不同的东西,但我只能从我的文本区域获得一个值/文本。
尝试序列化,得到相同的结果。我有一个打印出的消息,我的NodeJS服务器在控制台上吐出相同的结果。我尝试过使用类而不是ID。尝试添加type =" text"对客户没有用。尝试使用JSON.stringify而不使用cust和date。输入字段不起作用吗?我使用的是JQuery 3.1.1
回复说:{date:'',customer:'""',注意:'注释到这里'}
<form name="loginForm" method="post" action="/sendReturnForm" id="returnForm">
<p>Date:</p>
<input type="date" name="formDate" id="formDate"/>
<p>Customer:</p>
<input name="formCustomer" id="formCustomer"/>
<p>Notes:</p>
<textarea rows="5" cols="40" id="notes">Notes go here</textarea>
</form>
<script language="JavaScript">
$(document).ready(function () {
var values = {
date: $("#formDate").text(),
customer: JSON.stringify($("#formCustomer").text()),
notes: $("#notes").text()
};
$(".submitButton").click(function () {
$.ajax({
url: '/sendReturnForm',
type: 'POST',
data: JSON.stringify(values),
contentType: 'application/json; charset=utf-8',
dataType: 'json',
async: false,
success: function (msg) {
alert(JSON.stringify(values));
}
});
});
});
</script>
答案 0 :(得分:3)
$('#formCustomer')是一个输入字段,因此要获得其值,您需要使用 $('#formCustomer')。val()而不是 $(“ #formCustomer“)。文本()
答案 1 :(得分:2)
单击“提交”按钮时需要收集数据:
$(".submitButton").click(function (event) {
event.preventDefault();
var values = {
date: $("#formDate").val(),
customer: JSON.stringify($("#formCustomer").val()),
notes: $("#notes").text()
};
$.ajax({
url: '/sendReturnForm',
type: 'POST',
data: JSON.stringify(values),
contentType: 'application/json; charset=utf-8',
dataType: 'json',
async: false,
success: function (msg) {
alert(JSON.stringify(values));
}
});
});
答案 2 :(得分:2)
正如@Yaroslav已经指出的那样,你应该在onclick处理程序中收集值,看看我的代码,在发送数据之前将函数包装在我调用的函数中,还为我工作而不是text() :
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form name="loginForm" method="post" action="/sendReturnForm" id="returnForm">
<p>Date:</p>
<input type="date" name="formDate" id="formDate"/>
<p>Customer:</p>
<input name="formCustomer" id="formCustomer"/>
<p>Notes:</p>
<textarea rows="5" cols="40" id="notes">Notes go here</textarea>
<button type='button' class='submitButton'>submit</button>
</form>
<script language="JavaScript">
$(document).ready(function () {
function getValues(){
var values = {
date: $("#formDate").val(),
customer: JSON.stringify($("#formCustomer").val()),
notes: $("#notes").text()
};
return values;
}
//$.each($('#returnForm').serializeArray(), function (i, field) {
//values[field.name] = field.value;
//});
$(".submitButton").click(function () {
console.log(JSON.stringify(getValues()));
$.ajax({
url: '/sendReturnForm',
type: 'POST',
data: JSON.stringify(getValues()),
contentType: 'application/json; charset=utf-8',
dataType: 'json',
async: false,
success: function (msg) {
alert(JSON.stringify(values));
}
});
});
});
</script>
&#13;
答案 3 :(得分:1)
您必须使用.val()函数而不是.text()来从输入中获取值。见下面的代码。对于textarea .text()很好但输入.val()可以工作。
<script language="JavaScript">
$(document).ready(function () {
var values = {
date: $("#formDate").val(),
customer: JSON.stringify($("#formCustomer").text()),
notes: $("#notes").val()
};
//$.each($('#returnForm').serializeArray(), function (i, field) {
//values[field.name] = field.value;
//});
$(".submitButton").click(function () {
$.ajax({
url: '/sendReturnForm',
type: 'POST',
data: JSON.stringify(values),
contentType: 'application/json; charset=utf-8',
dataType: 'json',
async: false,
success: function (msg) {
alert(JSON.stringify(values));
}
});
});
});
希望这对你有用。