Javascript 在ajax post中不包含输入值的div html

Javascript 在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

<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 &raquo;</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 &raquo;</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">