我正在开发一个消息传递系统。我已经完成了收件箱和消息查看部分。它们被加载到用户帐户页面上的 div 中,并且在不刷新页面的情况下都可以正常工作。
我基于这篇文章的 jquery 。
在此处获得一些帮助以获取消息链接以在不刷新页面的情况下在 div 中打开消息,以及如何添加过滤器以允许配置文件链接实际刷新并转到实际的配置文件页面。这都很好。
我转到消息发送端,它使用模式(twitter 引导程序)来加载外部表单。这也有效,但我现在花了很长时间试图弄清楚如何做与链接相同的事情,使用表单提交,即在不刷新整个页面的情况下提交它。同样,我使用的 jQuery 与收件箱部分几乎相同。
这是收件箱代码:
<p id="waiting"><!-- ajax loading --></p>
<div class="messages"><!-- inbox --></div>
Javascript:
$.ajaxSetup({ cache: false});
$(document).ready(function(){
// set up the click event
$('a.loader').live('click', function() {
var toLoad = '<? echo base_url(); ?>user/messaging/';
$('.messages').fadeOut(100, loadContent);
$('#load').remove();
$('#waiting').append('<div id="load" style="height: 700px; background:url(<? echo base_url(); ?>files/recordCovers/index.html?<? echo rand(5,1555); ?>); background-size: cover;"><div class="circle"></div><div class="circle1"></div></div>');
$('#load').fadeOut(1000);
function loadContent() {
$('.messages').load(toLoad, '', function(response, status, xhr) {
if (status == 'error') {
var msg = "Sorry but there was an error: ";
$(".messages").html(msg + xhr.status + " " + xhr.statusText);
}
}).fadeIn(4000, hideLoader());
}
function hideLoader() {
$('#load').fadeOut(2000);
}
return false;
});
});
<? // this makes the links open in the same div
// a:not(.profile) allows profile links to open in browser window
// we put class="profile" on profile links.?>
$(".messages").on("click", "a:not(.profile)", function (e) {
$(".messages").load($(this).attr("href"));
e.preventDefault();
});