[英]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.