javascript - 在 Razor 页面中发布 JQuery/Ajax 并重定向到从 MVC 操作返回的视图(又名表单提交)
问题描述
我通过 JQuery 或 AJax 将 json 数组发布到 MVC Action,Action 正确处理请求。但是,然后 MVC 操作返回一个视图,我需要重定向到这个视图(或用它替换一个正文),但我不知道如何。
因此,除了返回值之外,该操作运行良好:
[HttpPost]
public ActionResult CreateGet(List<string> itemIds)
{
List<TempItem> items = new List<TempItem>();
foreach (string item in itemIds)
{
items.Add(CallApi.Get(Request.Cookies["jwt"], "tempitems", item.ToString()).Content.ReadAsAsync<TempItem>().Result);
}
Invoice inv = new Invoice()
{
IsSupplement = items[0].IsSupplement,
Date = DateTime.Now,
Employee = CallApi.Get(Request.Cookies["jwt"], "employees/getprofile").Content.ReadAsAsync<Employee>().Result,
InvoiceItems = new List<InvoiceItem>()
};
foreach(TempItem item in items)
{
inv.InvoiceItems.Add(new InvoiceItem { Amount = item.Amount, ProductId = item.ProductId, Product = item.Product });
}
return View(inv);
}
剃须刀页面内的脚本,它收集选定的 id 并将它们发布到操作中。发布后没有其他任何事情发生,即使没有调用警报,即使视图页面存在并且我在控制台中看不到失败。
function CreateInvoice(id) {
var selected = $('#' + id).DataTable().rows('.selected').data();
var items = [];
for (i = 0; i < selected.length; i++) {
items.push(selected[i][0]);
}
var postData = { itemIds: items };
$.ajax({
type: "POST",
url: "/Invoices/CreateGet",
data: postData,
success: function (data) {
alert("success");
window.location.href = data.url;
},
dataType: "json",
traditional: true
});
}
更新
好吧,我放弃了这些废话,坚持使用在 URL 中传递 id 数组的 GET 请求。我想我只是做错了事。
解决方案
您应该更改ActionResult
为JsonResult
. 并像这样返回:
return Json(new {url: "yoururl", inv: yourdata}, JsonRequestBehavior.AllowGet);
推荐阅读
- mysql - MySQL 外键
- android - Robolectric 4.0.2 测试未在 gradle 3.2.1 中运行,出现 NoSuchMethodError: setUseLegacyResources(Z)V
- java - 为什么 startForeground 不起作用?通知
- amazon-web-services - Laravel 5.4 AWS 服务器
- android - 如何找到在 android 中启动的最顶级的 Activity?
- swift - 当应用程序在后台运行时使用通知读取 healthkit 心率
- twitter - 将 Twitter 与 dialogflow 机器人集成时出现“机器人未启动”错误
- javascript - 可以从外部调用 rollup.js 捆绑的函数吗?
- javascript - Fetch() 认证失败
- ios - UICollectionView 动态表头大小计算