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吗?我找不到它。请尝试更改
返回内容(“要返回的字符串”)
byreturnjson(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" });
}