[英]How do I load specific data via jQuery Ajax in this Codeigniter application, instead of the entire page?
[英]How can I load the first page of an MVC 4 application via AJAX?
如何通過AJAX加載MVC 4應用程序的第一頁?
我已經有了結構設置來加載所有后續頁面,但我剛剛碰到了一堵磚牆。
通過history.js添加歷史記錄管理后,我已將部分視圖更改為具有后退按鈕 - 按預期工作。
我的問題是,在導航到幾頁然后按下后退按鈕后,當我到達Windows歷史記錄中的第一項時 - 即:index.chtml頁面 - 此頁面加載導航欄出現兩次。 按F5后,頁面正確加載。
我做錯了什么,解決這個問題的最佳方法是什么?
在此先感謝您的幫助
順便說一句,這是我在布局視圖上加載的JavaScript:
$(function () {
var contentShell = $('#bodyContent');
var History = window.History, State = History.getState();
$(".ajaxLink").on('click', function (e) {
e.preventDefault();
var url = $(this).data('href');
var title = $(this).data('title');
History.pushState(null, title, url);
});
History.Adapter.bind(window, 'statechange', function () {
State = History.getState();
navigateToURL(State.url);
});
function navigateToURL(url) {
$.ajax({
type: "GET",
url: url,
dataType: "html",
success: function (data, status, xhr) {
contentShell.html(data);
},
error: function (xhr, status, error) {
alert("Error loading Page.");
}
});
}
$('.history-back').on('click', function (e) {
e.preventDefault();
History.back();
return false;
})
});
這看起來就像一個已知問題,與在某些瀏覽器中觸發兩次的點擊事件相關的錯誤。 此行為導致代碼中的History.pushState(...)
執行兩次。
你可以嘗試添加某事。 喜歡e.stopPropagation()
之后你的代碼。 有關該問題的更多信息,請訪問: https : //stackoverflow.com/a/21511818/2270888
在“第一項”控制器操作中嘗試這樣的操作:
public ActionResult Index()
{
if (Request.IsAjaxRequest())
{
return PartialView();
}
return View();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.