Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/464.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Ajax开始表单更新div_Javascript_Jquery_Asp.net_Ajax_Asp.net Mvc - Fatal编程技术网

Javascript Ajax开始表单更新div

Javascript Ajax开始表单更新div,javascript,jquery,asp.net,ajax,asp.net-mvc,Javascript,Jquery,Asp.net,Ajax,Asp.net Mvc,在我的项目中,我在DocumentsController中有一个用于创建文档的主页面,用户可以在其中更改文档的状态。如果状态为“新建”,则允许用户向文档中添加新设备(“部件”) 我的目标是在ajax表单submit上向div#newDevice插入一个字符串。但是,html结果不会在我的主视图中呈现,而是呈现为链接…/PartsBoxes/CreatePartial 我如何解决这个问题 我的主页部分: <input type="button" value="Add a new box" i

在我的项目中,我在
DocumentsController
中有一个用于创建文档的主页面,用户可以在其中更改文档的状态。如果状态为“新建”,则允许用户向文档中添加新设备(“部件”)

我的目标是在ajax表单submit上向
div#newDevice
插入一个字符串。但是,html结果不会在我的主视图中呈现,而是呈现为链接
…/PartsBoxes/CreatePartial

我如何解决这个问题

我的主页部分:

<input type="button" value="Add a new box" id="addNewBoxButton" class="add_new_btn" />
<input type="button" value="Add box from db" id="addDBBoxButton" class="add_existent_btn" />

<hr />
<div id="newDevice"></div>
<hr />

 <script>
    $("#addNewBoxButton").on("click", function () {
        var deviceId = 1;
        $.get('@Url.Action("CreatePartial", "PartsBoxes")',{
            deviceId: deviceId
        },
            function (data) {
                $("#newDevice").html(data);
            });

    });
</script>
因此,我得到:

首先,您应该确保
jquery。页面中加载了不引人注目的ajax
,您不使用jquery 1.9版本,因为它不支持jquery实时方法

参考:

//控制器

[HttpPost]
[ValidateAntiForgeryToken]
public JsonResult CreatePartial(BoxPartsViewModel partsBox)
{ 
   if (ModelState.IsValid)
   {
      //do something
   }
   return Json(new { data = "string to return" });
}

您可以发布或突出显示按钮和#newBox的HTML吗?我找不到它。请尝试更改
返回内容(“要返回的字符串”)
by
returnjson(new{data=“string to return”})。另外,将方法
CreatePartial
的返回类型更改为
JsonResult
除了字符串i get
{“data”:“string to return”}
之外,还可以在发送GETI send get以获取表单的部分视图时用[HttpPost]标记操作,然后我用提交表单数据发送帖子在您的回答中,脚本应该调用get方法,以使用ajax表单获取部分视图标记,但控制器用于帖子,这实际上是在get方法之后完成的。因此,我的get方法没有问题,但是使用post返回,数据不会像应该的那样返回到
UpdateTargetId
,而是在单独的页面中返回。是的,我已经包含了jquery.unobtrusive-ajax脚本,它已经呈现出来了。
  [HttpPost]
  [ValidateAntiForgeryToken]
  public ContentResult CreatePartial(BoxPartsViewModel partsBox)
  {
      if (ModelState.IsValid)
      {
         //do something
      }
      return Content("string to return");
  }
<script src="~/Scripts/jquery.unobtrusive-ajax.js"></script>
<script>
    $("#addNewBoxButton").on("click", function () {
        var deviceId = 1;
        $("#newDevice").load('@Url.Action("CreatePartial", "PartsBoxes")' + "/" deviceId );  
    });
</script>
[HttpPost]
[ValidateAntiForgeryToken]
public JsonResult CreatePartial(BoxPartsViewModel partsBox)
{ 
   if (ModelState.IsValid)
   {
      //do something
   }
   return Json(new { data = "string to return" });
}