我正在努力解决如何正确提交我真的只需要发送 JSON 而不是表单控件的表单。我有一个 SubmitOrder() javascript 函数:
function SubmitOrder() {
var selectedProductsAsJson = JSON.stringify(selectedProducts);
// This line works...
$.post('/OrderCheckout/Save', { jsonData: selectedProductsAsJson });
// ... or this line works...
$('#productListForm').submit();
// but not both lines together.
}
我要做的是将 selectedProductsAsJson 发送到我的控制器,对其进行处理,然后将用户发送到新页面。$.post 行完成了前两个操作,但之后我不知道如何将用户发送到新页面。
如果我只执行 .submit() 行,用户将被重定向到新页面,但控制器没有要处理的 json 数据。
如果我同时使用这两行,$.post 调用是异步的,用户将在 $.post 调用完成之前进入新表单。我在这里读到我可以使 $.post 调用同步,但似乎我应该能够通过一次调用服务器来完成所有这些。我缺少什么来实现这一点?
我的控制器目前看起来像这样;
public class OrderCheckoutController : Controller
{
public ActionResult Index()
{
return View();
}
public void Save(string jsonData)
{
List<Product> selectedProducts = new JavaScriptSerializer().Deserialize<List<Product>>(jsonData);
decimal totalPrice = selectedProducts.Sum(x => x.Price);
ViewBag.SaleTotal = totalPrice;
}
}