MVC3 RemoveFromCart JSON的Jquery不工作
基于MusicStoreMVC应用程序示例,我创建了非常类似的应用程序。不同之处在于我在*.aspx文件中使用了C而不是razor 这里说的是RemoveFromCart的控制器代码MVC3 RemoveFromCart JSON的Jquery不工作,jquery,asp.net-mvc-3,asp.net-ajax,Jquery,Asp.net Mvc 3,Asp.net Ajax,基于MusicStoreMVC应用程序示例,我创建了非常类似的应用程序。不同之处在于我在*.aspx文件中使用了C而不是razor 这里说的是RemoveFromCart的控制器代码 [AcceptVerbs(HttpVerbs.Post)] public ActionResult RemoveFromCart(int id) { // Remove the item from the cart var cart = Shopping
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult RemoveFromCart(int id)
{
// Remove the item from the cart
var cart = ShoppingCart.GetCart(this.HttpContext);
// Get the name of the album to display confirmation
string productName = EchoJobsClassesDataContext.Carts
.Single(item => item.RecordId == id).Product.ProductName;
// Remove from cart
int itemCount = cart.RemoveFromCart(id);
// Display the confirmation message
var results = new ShoppingCartRemoveViewModel
{
Message = Server.HtmlEncode(productName) +
" has been removed from your shopping cart.",
CartTotal = cart.GetTotal(),
CartCount = cart.GetCount(),
ItemCount = itemCount,
DeleteId = id
};
return Json(results);
}
JSON结果不会在javascript中传递回handleUpdate。我把代码贴在下面。我知道这个问题有很多答案,但我已经尽了一切努力让它工作,但仍然没有成功
Javascript:
<script src="<%: Url.Content("~/Scripts/MicrosoftAjax.js") %>" type="text/javascript"></script>
<script src="<%: Url.Content("~/Scripts/MicrosoftMvcAjax.js") %>" type="text/javascript"></script>
<script src="<%: Url.Content("~/Scripts/jquery-1.5.1.min.js") %>" type="text/javascript"></script>
<%-- <script src="<%: Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js") %>" type="text/javascript"></script>
--%> <script language="javascript" type="text/javascript">
function handleUpdate(results) {
var json = results.get_data()
var data = Sys.Serialization.JavaScriptSerializer.deserialize(json);
alert(data.toString());
// // Load and deserialize the returned JSON data
// var json = results.get_data();
// var data = JavaScriptSerializer.deserialize(json);
// Update the page elements
// // Update the page elements
// $('#row-' + data.DeleteId).fadeOut('slow');
// $('#cart-status').text('Cart (' + data.CartCount + ')');
// $('#update-message').text(data.Message);
// $('#cart-total').text(data.CartTotal);
// if (data.ItemCount == 0) {
// $('#row-' + data.DeleteId).fadeOut('fast');
// } else {
// $('#cartItem-count-' + data.DeleteId).text(data.ItemCount);
// }
// $('#cartItem-total').text(data.CartTotal);
// $('#update-message').text(data.Message);
// $('#cartItem-status').text('Cart (' + data.CartCount + ')');
}
请注意,我已经注释掉了很多代码,只是为了看看结果是否发布在这里。我没有成功
这是我的Index.aspx文件:
<% foreach (var item in Model.AsEnumerable())
{ %>
<%foreach (var cartItem in item.CartItems)
{%>
<tr>
<td>
<%: Html.ActionLink(cartItem.Product.ProductName, "LearnMore", "ProductDetails", new { id = cartItem.ProductId },
null)%>
</td>
<td>
<%: Html.DisplayFor(cartitem => cartItem.Product.ProductPrice) %>
</td>
<td id="cartItem-count-<%:cartItem.RecordId %>">
<%: Html.DisplayFor(caritem => cartItem.Count) %>
<%: Ajax.ActionLink("Remove Count", "RemoveFromCart", new { id = cartItem.RecordId }, new AjaxOptions { OnSuccess = "handleUpdate", HttpMethod = "Post" })%>
</td>
<td id="row-<%:cartItem.RecordId %>">
<%: Ajax.ActionLink("Remove From Cart", "RemoveFromCart/" + cartItem.RecordId, new AjaxOptions { OnSuccess = "handleUpdate", HttpMethod = "Post" })%>
</td>
</tr>
<%} %>
<tr>
<td>
Total
</td>
<td id="cart-total">
<%: Html.DisplayFor(modelItem => item.CartTotal) %>
</td>
</tr>
如果我刷新页面,那么一切似乎都在工作,但没有,使用JSON。请原谅,我是MVC和JSON的新手。这真让我抓狂
谢谢。你能发布调用动作的jQuery代码吗?@Steve:Ajax.ActionLink正在做Ajax。这里没有$.ajax。@aceclassic:那么,当您单击链接时,是否会调用控制器操作?您是否使用Firebug检查服务器的响应?