Javascript 在ajax post中不包含输入值的div html
这是我页面上的一个divJavascript 在ajax post中不包含输入值的div html,javascript,jquery,asp.net,asp.net-mvc,Javascript,Jquery,Asp.net,Asp.net Mvc,这是我页面上的一个div <div class="myDiv"> <h1>ASP.NET</h1> <input id="Text1" type="text" value="" class="form-control" /> <input id="Submit1" type="button" value="submit" onclick="check()" /> <p class="lead">
<div class="myDiv">
<h1>ASP.NET</h1>
<input id="Text1" type="text" value="" class="form-control" />
<input id="Submit1" type="button" value="submit" onclick="check()" />
<p class="lead">ASP.NET is a free web framework for building great Web sites and Web applications using HTML, CSS and JavaScript.</p>
<p><a href="http://asp.net" class="btn btn-primary btn-lg">Learn more »</a></p>
</div>
我收到的html是
<h1>ASP.NET</h1>
**<input id="Text1" type="text" value="" class="form-control"></input>**
//here is am not getting the text enterted by user
<input id="Submit1" type="button" value="submit" onclick="check()">
<p class="lead">ASP.NET is a free web framework for building great Web sites and Web applications using HTML, CSS and JavaScript.</p>
<p><a href="http://asp.net" class="btn btn-primary btn-lg">Learn more »</a></p>
我认为在将文本框值发送到服务器之前,需要对其进行html编码。尝试禁用web.config中的验证请求,看看是否正确接收到文本值。我遇到了一个类似的问题,并通过使用jQuery设置value属性解决了这个问题,因此.html函数可以接收。只需添加$'Text1.attrvalue,$'Text1.val;在发送数据之前:
function check() {
$('#Text1').attr("value", $('#Text1').val());
var formData = $('.myDiv').html();
$.ajax({
type: "POST",
url: "/Home/SendData",
data: {
formData: formData
}
});
}
对于多个输入,您可以添加一个类来标识它们,并在我的示例中进行更新,并使用一个函数来更改输入的值,例如:
<div class="myDiv">
<h1>ASP.NET</h1>
<input id="Text1" type="text" value="" class="form-control update" />
<input id="Submit1" type="button" value="submit" onclick="check()" />
<p class="lead">ASP.NET is a free web framework for building great Web sites and Web applications using HTML, CSS and JavaScript.</p>
<p><a href="http://asp.net" class="btn btn-primary btn-lg">Learn more »</a></p>
</div>
现在你有了一个函数来改变所有的输入,只需在你想要改变的每个输入中使用相同的类
更新
如果所有输入都在同一个div中,则可以忽略更新类并使用以下脚本:
$(document).ready(function () {
$('#myDiv input[type="text"]').on('change', function() {
$(this).attr("value", $(this).val());
});
});
您只需在示例中将id myDiv添加到div:
<div class="myDiv" id="myDiv">
只是为了补充说明,我不想发布我的html文本框的数据,我想要div的整个html以及用户在文本框中输入的数据。@Brian是的,我想将整个div htmlGive name属性发送到输入标记我的页面上有多个输入。所以不能真正使用这个代码。还有其他出路吗?$'Text1'.attrvalue,$'Text1'.val;这是可行的,但正如我提到的,我的页面上几乎有55个文本框,所以这将是一个真正的痛苦。我们能做一些共同的事情吗textbox@JohnyBravo检查更新,我添加了一个可能的解决方案。尝试为文本字段创建一个新属性,称之为“dataField”,并将其值设置为原始值属性。Asp.net mvc没有viewstate功能,因此我认为表单没有随其值一起发送,您需要手动执行此操作。这与Asp.net无关。即使您在浏览器中检查html,它也不包含userstrange浏览器行为输入的值!
$(document).ready(function () {
$('.update').on('change', function() {
$(this).attr("value", $(this).val());
});
});
function check() {
var formData = $('.myDiv').html();
$.ajax({
type: "POST",
url: "/Home/SendData",
data: {
formData: formData
}
});
}
$(document).ready(function () {
$('#myDiv input[type="text"]').on('change', function() {
$(this).attr("value", $(this).val());
});
});
<div class="myDiv" id="myDiv">