我有一个MVC应用程序,可以将用户发送到购物车页面,以便在结帐前查看其项目摘要。当用户单击结帐链接时,它会触发此JavaScript函数:
function CartCheckOut() {
var cartitems = '@Html.Raw(Json.Encode(Model.CartItems))';
$.ajax({
type: 'POST',
datatype: "application/json",
data: { cartitems: cartitems },
url: '@Url.Action("CheckOut", "ShoppingCart")',
success: function (result) {
if (result) {
window.location = result;
}
}
});
}
然后将它们发送到处理请求的购物车控制器并返回带有商家密钥的URL,以便将它们重定向到商家网站以完成结帐流程。
为了简化问题的描述,我排除了Checkout方法的其他部分,但它只返回一个带有键/对值的字符串URL。但是由此产生的问题与返回给函数的URL无关,因为在将我登陆到启动调用的同一页面后,它总是会导致页面未找到错误。
public string CheckOut(string cartitems)
{
return "http://www.google.com";
}
如果我使用window.open(结果);在CartCheckOut函数中,会启动一个新页面,然后我将转到从控制器传回的URL。
但如果我使用
window.location = result;
或
window.location.href = result;
我收到一个Page not found错误,没有重定向到指定的URL。 我也尝试将Controller方法指定为ActionResult和RedirectResult来执行返回重定向(url),但结果是相同的。
这种执行重定向的方法是不正确的还是我可能会遗漏某些关键部分?