フォームコントロールを送信するのではなく、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行は、最初の2つのアクションを実行しますが、その後、ユーザーを新しいページに移動する方法がわかりません。
.submit()行を実行するだけで、ユーザーは新しいページにリダイレクトされますが、コントローラーには処理するjsonデータがありません。
両方の行を使用する場合、$。post呼び出しは非同期であり、$。post呼び出しが完了する前に、ユーザーは新しいフォームを使用することになります。$ .post呼び出しを同期させることができることをここで読みましたが、サーバーへの1回の呼び出しでこれらすべてを実行できるはずです。これを実現するために私は何が欠けていますか?
私のコントローラーは現在このようになっています。
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;
}
}