Javascript 有什么方法可以在整个网站上快速轻松地将标准网站加载转换为AJAX?
也许这不是一个好问题,但我想知道是否可以轻松快速地(也许只有一个功能?)更改网站上的所有链接,从刷新网页到加载用户通过AJAX单击的URL 我的网站到处都有标准链接,但如果你想让iPhone手机应用程序脱离它,你需要到处使用AJAX(也许还有HTML5历史API),因为任何链接都会打开Safari浏览器 您认为有没有办法快速转换每个链接以删除当前源代码并加载全新页面而无需刷新浏览器窗口?或者它是否需要手动编码和为每一组链接提供单独的功能 例如:Javascript 有什么方法可以在整个网站上快速轻松地将标准网站加载转换为AJAX?,javascript,ajax,html,html5-history,Javascript,Ajax,Html,Html5 History,也许这不是一个好问题,但我想知道是否可以轻松快速地(也许只有一个功能?)更改网站上的所有链接,从刷新网页到加载用户通过AJAX单击的URL 我的网站到处都有标准链接,但如果你想让iPhone手机应用程序脱离它,你需要到处使用AJAX(也许还有HTML5历史API),因为任何链接都会打开Safari浏览器 您认为有没有办法快速转换每个链接以删除当前源代码并加载全新页面而无需刷新浏览器窗口?或者它是否需要手动编码和为每一组链接提供单独的功能 例如: jQuery(document).on('a',
jQuery(document).on('a', 'click', function(){
// STEP1: AJAX call that will make PHP download page from link
// STEP2: Delete current source code and load new one (in this case including deletion of this function itself)
});
你认为这有可能吗?或者这里有什么陷阱吗?我做过类似的事情。这是可能的,但您可能需要在服务器端更改一些内容。 在我的例子中,我有一些与
href=#
的链接,其中一些有点击触发器,所以我想把它们排除在外
在这个函数中,我检查没有href=#
的每个链接,如果它们没有单击事件,我就绑定ajax
bindAjaxLinks: function() {
$('a[href!="#"]').each(function() {
var eventObj = $(this).data('events');
if (!eventObj || !eventObj.click) {
// not a javascript link, do your thing
var link = $(this).attr('href');
if (link) {
$(this).click(function(event) {
event.preventDefault();
// do your ajax calling here.
});
}
}
});
一些注意事项:在我的例子中,我向使用此函数发出的每个请求添加了一个额外的参数,类似于isAjax
,在后端,我只发送整个页面的一部分(没有head和一些其他标记)。后来我用这个新的html替换了用户可见的内容
这导致了一个问题:如果服务器响应重定向,我得到了整个页面,这是我不想要的,所以我确保在重定向后保留此
isAjax
参数,这就解决了这个问题。这里没有快捷方式,抱歉。谢谢!我将尝试一下,看看它是否能正常工作:)我已经有了一个想法,但只是想确定开始是否有意义,或者是否因为某种原因它肯定不会工作。更新头部
和身体
的内容在理论上应该是可行的(只有一个功能)。@Paul我更新了我的答案,考虑了一些问题,你可能也要检查一下。谢谢,我一直在监视它,现在我几乎可以肯定,将普通链接转换为AJAX将很容易:)我认为这是我问题的答案(没有AJAX)-也许有人会发现这个或@keune答案很有用:)