在调用 jQuery load 或 $.ajax with datatype html 元素后不更新
After calling jQuery load or $.ajax with datatype html element does not update
我目前遇到一个问题,当调用 jQuery 加载时,以前可更新的元素不再可更新,它会恢复到其原始状态,尽管它仍然可以访问和更新屏幕没有变化。
该元素位于布局页面的局部视图中。通过单击 <li>
菜单项调用加载事件。然后调用加载并尝试获取购物车中可能的更改。
部分查看代码
<div id="cart" style="float:right;clear:right;margin-top:31px;height:21px;">
<span>
<a href='/ShoppingCart/ShoppingCart'><img style='height:16px;margin-bottom:5px;' src='../Content/images/cartImage.gif' alt='cart' />0 Total : 0</a>
</span>
</div>
布局代码
function GetCart() {
var url = "/ShoppingCart/GetCartAmount/";
$.ajax({
url: url,
data: {},
cache: false,
type: "POST",
success: function (result) {
var markup = "<span> <a href='/ShoppingCart/ShoppingCart'><img style='height:16px;margin-bottom:5px;' src='../Content/images/cartImage.gif' alt='cart'/></a> " +
result.ItemCount + " Total: " + result.Total + "</span>";
$("#cart").html(markup);
alert($('#cart').html());
alert("after set");
},
error: function (reponse) {
alert("error : " + reponse);
}
});
}
Ajax 代码在一个函数中进行其他处理。
$.ajax({
url: data.redirectUrl,
dataType: "html",
success: function (responseText) {
var tempDiv = $.parseHTML(responseText);
$("#result").html(tempDiv).show();
}
});
GetCart();
控制器代码
<HttpPost()>
Function GetCartAmount() As ActionResult
Dim ItemCount = GetCart().Count
Return Json(New With {.Total = GetCartTotal().ToString, .ItemCount = ItemCount})
End Function
Public Function GetCart() As List(Of WebItemModel)
Dim retValue As New List(Of WebItemModel)
If Session("Cart") IsNot Nothing Then
retValue = DirectCast(Session("Cart"), List(Of WebItemModel))
End If
Return retValue
End Function
如果需要提供任何进一步的代码,请告诉我。我没有 post 这一切,因为它会占用太多 space 并可能使人们感到困惑。另外要说明一点,它最初在 jQuery 加载发生之前工作。
通过执行以下操作,我终于让它工作了
function GetCart() {
var url = "/ShoppingCart/Cart/";
var $partialDiv = $('#PartialCart div')
$.get(url, function (data) {
$partialDiv.replaceWith(data);
});
}
它现在似乎工作得很好,replaceWith 帮了我的忙。
控制器代码
Public Function GetCart() As List(Of WebItemModel)
Dim retValue As New List(Of WebItemModel)
If Session("Cart") IsNot Nothing Then
retValue = DirectCast(Session("Cart"), List(Of WebItemModel))
End If
Return retValue
End Function
我目前遇到一个问题,当调用 jQuery 加载时,以前可更新的元素不再可更新,它会恢复到其原始状态,尽管它仍然可以访问和更新屏幕没有变化。
该元素位于布局页面的局部视图中。通过单击 <li>
菜单项调用加载事件。然后调用加载并尝试获取购物车中可能的更改。
部分查看代码
<div id="cart" style="float:right;clear:right;margin-top:31px;height:21px;">
<span>
<a href='/ShoppingCart/ShoppingCart'><img style='height:16px;margin-bottom:5px;' src='../Content/images/cartImage.gif' alt='cart' />0 Total : 0</a>
</span>
</div>
布局代码
function GetCart() {
var url = "/ShoppingCart/GetCartAmount/";
$.ajax({
url: url,
data: {},
cache: false,
type: "POST",
success: function (result) {
var markup = "<span> <a href='/ShoppingCart/ShoppingCart'><img style='height:16px;margin-bottom:5px;' src='../Content/images/cartImage.gif' alt='cart'/></a> " +
result.ItemCount + " Total: " + result.Total + "</span>";
$("#cart").html(markup);
alert($('#cart').html());
alert("after set");
},
error: function (reponse) {
alert("error : " + reponse);
}
});
}
Ajax 代码在一个函数中进行其他处理。
$.ajax({
url: data.redirectUrl,
dataType: "html",
success: function (responseText) {
var tempDiv = $.parseHTML(responseText);
$("#result").html(tempDiv).show();
}
});
GetCart();
控制器代码
<HttpPost()>
Function GetCartAmount() As ActionResult
Dim ItemCount = GetCart().Count
Return Json(New With {.Total = GetCartTotal().ToString, .ItemCount = ItemCount})
End Function
Public Function GetCart() As List(Of WebItemModel)
Dim retValue As New List(Of WebItemModel)
If Session("Cart") IsNot Nothing Then
retValue = DirectCast(Session("Cart"), List(Of WebItemModel))
End If
Return retValue
End Function
如果需要提供任何进一步的代码,请告诉我。我没有 post 这一切,因为它会占用太多 space 并可能使人们感到困惑。另外要说明一点,它最初在 jQuery 加载发生之前工作。
通过执行以下操作,我终于让它工作了
function GetCart() {
var url = "/ShoppingCart/Cart/";
var $partialDiv = $('#PartialCart div')
$.get(url, function (data) {
$partialDiv.replaceWith(data);
});
}
它现在似乎工作得很好,replaceWith 帮了我的忙。
控制器代码
Public Function GetCart() As List(Of WebItemModel)
Dim retValue As New List(Of WebItemModel)
If Session("Cart") IsNot Nothing Then
retValue = DirectCast(Session("Cart"), List(Of WebItemModel))
End If
Return retValue
End Function