通过AJAX发送表单数据并使用结果填充div

时间:2020-09-29 20:25:09

标签: jquery ajax asp.net-mvc

我想进行AJAX调用以提交“数据” div中的数据,并使用结果填充结果div。

目前,它不会在提交时调用AJAX。如果我不想以这种方式提交,我是否应该甚至使用html.BeginForm()?

$.ajax({
type: 'POST',
url: '@Url.Content("~/ControllerName/ActionName")',
data: ModelName,
success: function(result) {
$('#Results').data = result;
}});*@



@using (Html.BeginForm("Index", "ControllerName", FormMethod.Post))
{
  <div id="Data">

  @Html.DropDownListFor(x => x.ID, new SelectList(Model.Stuff, "ID", "Name"), "Choose")
   //more dropdown lists
  

<input name="SubmitButton" type="submit" id="Submit" value="Submit"/>

  </div>
 }


 <div id="Results">

   @Html.DisplayTextFor(x => x.Sum)

 </div>

1 个答案:

答案 0 :(得分:1)

https://dotnetfiddle.net/XQdmK1

控制器/视图模型

public class Stuff
{
    public int ID { get; set; }
    public string Name { get; set; }
}
public class JohnViewModel
{
    public int ID { get; set; }
    public IList<Stuff> Stuff { get; set; }
    public int Sum { get; set; }
}
public class HomeController : Controller
{
    public ActionResult Index18()
    {
        var stuff1 = new Stuff { ID = 1, Name = "Name1" };
        var stuff2 = new Stuff { ID = 2, Name = "Name2" };
        var stuff3 = new Stuff { ID = 3, Name = "Name3" };
        var viewModel = new JohnViewModel();
        viewModel.Sum = 27;
        viewModel.Stuff = new List<Stuff>();
        viewModel.Stuff.Add(stuff1);
        viewModel.Stuff.Add(stuff2);
        viewModel.Stuff.Add(stuff3);
        return View(viewModel);
    }

    [HttpPost]
    public ActionResult JohnUpdate(string myvar)
    {
        var q = myvar;
        return Json(q, JsonRequestBehavior.AllowGet);
    }

查看

@model WebApplication2.Controllers.JohnViewModel
@{
    Layout = null;
}
<!DOCTYPE html>
<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>Index18</title>
    <script src="~/Scripts/jquery-3.4.1.min.js"></script>
    <script>
        $(function () {
            $("#Submit").click(function () {
                $.ajax({
                    url: '/home/JohnUpdate',
                    type: "POST",
                    //dataType: "JSON",
                    data: { myvar: $("#selector option:selected").text() },
                    success: function (data) {
                        $("#Results").text(data);
                    },
                    error: function (xhr, ajaxOptions, thrownError) {
                        alert(xhr.status);
                        alert(thrownError);
                    }
                });
            });
        });
    </script>
</head>
<body>
    <div id="Data">
        @Html.DropDownListFor(x => x.ID, new SelectList(Model.Stuff, "ID", "Name"), "Choose", new { id = "selector" })
        @*more dropdown lists*@
        <input name="SubmitButton" type="button" id="Submit" value="Submit" />
    </div>
    <div id="Results">
        @Html.DisplayTextFor(x => x.Sum)
    </div>
</body>
</html>