Php 不刷新页面的两个不同ajax请求
我有一个网站,它使用ajax在单击时直接将帖子加载到页面 但是。。。我在同一页上还有一个ajax联系人表单。但是,如果我先单击一个帖子,然后想稍后发送一条消息,它就会失败。但是,如果我刷新页面,直接转到联系人表单并发送消息,它在发送时不会失败。有没有什么方法可以在不刷新页面的情况下“重新加载”ajax,这样您就可以使用ajax在我的站点上执行多项操作Php 不刷新页面的两个不同ajax请求,php,jquery,ajax,Php,Jquery,Ajax,我有一个网站,它使用ajax在单击时直接将帖子加载到页面 但是。。。我在同一页上还有一个ajax联系人表单。但是,如果我先单击一个帖子,然后想稍后发送一条消息,它就会失败。但是,如果我刷新页面,直接转到联系人表单并发送消息,它在发送时不会失败。有没有什么方法可以在不刷新页面的情况下“重新加载”ajax,这样您就可以使用ajax在我的站点上执行多项操作 $(document).ready(function() { function yournewfunction() {
$(document).ready(function() {
function yournewfunction() {
var requestCallback = new MyRequestsCompleted({
numRequest: 3,
singleCallback: function() {
alert("I'm the callback");
}
});
var width = 711;
var animationSpeed = 800;
var pause = 3000;
var currentSlide = 1;
var $slider = $("#slider");
var $slideContainer = $(".slides");
var $slides = $(".slide");
var $toggleRight = $("#right");
var $toggleLeft = $("#left");
$toggleRight.click(function() {
$slideContainer.animate({
'margin-left': '-=' + width
}, animationSpeed, function() {
currentSlide++;
if (currentSlide === $slides.length) {
currentSlide = 1;
$slideContainer.css('margin-left', 0);
}
});
});
$toggleLeft.click(function() {
if (currentSlide === 1) {
currentSlide = $slides.length;
$slideContainer.css({
'margin-left': '-' + width * ($slides.length - 1) + 'px'
});
$slideContainer.animate({
'margin-left': '+=' + width
}, animationSpeed, function() {
currentSlide--;
});
} else {
$slideContainer.animate({
'margin-left': '+=' + width
}, animationSpeed, function() {
currentSlide--;
});
}
});
if ($(".slide img").css('width') == '400px' && $(".slide img").css('height') == '400px') {
$(".options").css("width", "400px");
$(".slide").css("width", "400px");
$("#slider").css("width", "400px");
$(".video-frame").css("width", "400px");
var width = 400;
};
if ($("#slider img").length < 2) {
$("#right, #left").css("display", "none");
};
if ($("iframe").length > 0 && $("iframe").length < 2) {
$(".options").css("width", "711px");
$(".slide").css("width", "711px");
$("#slider").css("width", "711px");
$(".video-frame").css("width", "711px");
$('.slide').hide();
var width = 711;
};
if ($(".slide img").css('width') > '400px' && $(".slide img").css('width') < '711px') {
$(".options").css("width", "600px");
$(".slide").css("width", "600px");
$("#slider").css("width", "600px");
$(".video-frame").css("width", "600px");
var width = 600;
};
}
$.ajaxSetup({
cache: false
});
$(".post-link").click(function(e) {
e.preventDefault()
var post_link = $(this).attr("href");
$("#single-post-container").html('<img id="loads" src="http://martinfjeld.com/wp-content/uploads/2015/09/Unknown.gif">');
$("#single-post-container").load(post_link, function(response, status, xhr) {
if (status == "error") {
var msg = "Sorry but there was an error: ";
$("#error").html(msg + xhr.status + " " + xhr.statusText);
} else {
$("#main-content").fadeIn(500);
$("body").addClass("opens");
yournewfunction();
}
});
requestCallback.requestComplete(true);
return false;
});
});
$(function() {
var form = $('#ajax-contact');
var formMessages = $('#form-messages');
$(form).submit(function(event) {
event.preventDefault();
var formData = $(form).serialize();
$.ajax({
type: 'POST',
url: $(form).attr('action'),
data: formData
}).done(function(response) {
// Make sure that the formMessages div has the 'success' class.
$(formMessages).removeClass('error');
$(formMessages).addClass('success');
// Set the message text.
$(formMessages).text(response);
// Clear the form.
$('#name').val('');
$('#email').val('');
$('#message').val('');
}).fail(function(data) {
// Make sure that the formMessages div has the 'error' class.
$(formMessages).removeClass('success');
$(formMessages).addClass('error');
// Set the message text.
if (data.responseText !== '') {
$(formMessages).text(data.responseText);
} else {
$(formMessages).text('Oops! An error occured and your message could not be sent.');
}
});
});
});
$(文档).ready(函数(){
函数yournewfunction(){
var requestCallback=新的MyRequestsCompleted({
数量要求:3,
singleCallback:function(){
警惕(“我是回叫”);
}
});
var宽度=711;
var animationSpeed=800;
var=3000;
var currentSlide=1;
变量$slider=$(“#slider”);
var$slideContainer=$(“.slides”);
变量$slides=$(“.slide”);
var$toggleRight=$(“#right”);
var$toggleLeft=$(“#左”);
$toggleRight。单击(函数(){
$slideContainer.animate({
“左边距”:“-=”+宽度
},动画速度,函数(){
currentSlide++;
如果(当前幻灯片==$slides.length){
currentSlide=1;
$slideContainer.css('margin-left',0);
}
});
});
$toggleLeft。单击(函数(){
如果(当前幻灯片===1){
currentSlide=$slides.length;
$slideContainer.css({
“左边距”:“-”+宽度*($slides.length-1)+“px”
});
$slideContainer.animate({
“左边距”:“+=”+宽度
},动画速度,函数(){
当前幻灯片--;
});
}否则{
$slideContainer.animate({
“左边距”:“+=”+宽度
},动画速度,函数(){
当前幻灯片--;
});
}
});
如果($(“.slide img”).css('width')=='400px'&&$(“.slide img”).css('height')=='400px'){
$(“.options”).css(“宽度”,“400px”);
$(“.slide”).css(“宽度”,“400px”);
$(“#滑块”).css(“宽度”,“400px”);
$(“.video frame”).css(“宽度”,“400px”);
var宽度=400;
};
如果($(“#滑块img”)。长度小于2){
$(“右”、“左”).css(“显示”、“无”);
};
如果($(“iframe”).length>0&$(“iframe”).length<2){
$(“.options”).css(“宽度”,“711px”);
$(“.slide”).css(“宽度”,“711px”);
$(“#滑块”).css(“宽度”,“711px”);
$(“.video frame”).css(“宽度”,“711px”);
$('.slide').hide();
var宽度=711;
};
如果($(“.slide img”).css('width')>'400px'&&($(“.slide img”).css('width')<'711px'){
$(“.options”).css(“宽度”,“600px”);
$(“.slide”).css(“宽度”,“600px”);
$(“#滑块”).css(“宽度”,“600px”);
$(“.video frame”).css(“宽度”,“600px”);
var宽度=600;
};
}
$.ajaxSetup({
缓存:false
});
$(“.post link”)。单击(函数(e){
e、 预防默认值()
var post_link=$(this.attr(“href”);
$(“#单邮政集装箱”).html(“”);
$(“#单邮件容器”).load(邮件链接,函数(响应,状态,xhr){
如果(状态=“错误”){
var msg=“抱歉,出现错误:”;
$(“#error”).html(msg+xhr.status+“”+xhr.statusText);
}否则{
$(“主要内容”).fadeIn(500);
$(“正文”).addClass(“打开”);
yournewfunction();
}
});
requestCallback.requestComplete(true);
返回false;
});
});
$(函数(){
var form=$(“#ajax联系人”);
var formMessages=$(“#表单消息”);
$(表格)。提交(功能(事件){
event.preventDefault();
var formData=$(form).serialize();
$.ajax({
键入:“POST”,
url:$(form.attr('action'),
数据:formData
}).完成(功能(响应){
//确保formMessages div具有“success”类。
$(formMessages).removeClass('error');
$(formMessages).addClass('success');
//设置消息文本。
$(formMessages)。文本(响应);
//清除表格。
$('#name').val('');
$('#email').val('');
$('#message').val('');
}).失败(功能(数据){
//确保formMessages div具有“error”类。
$(formMessages).removeClass('success');
$(formMessages).addClass('error');
//设置消息文本。
如果(data.responseText!=''){
$(formMessages).text(data.responseText);
}否则{
$(formMessages).text('Oops!发生错误,无法发送您的邮件');
}
});
});
});
虽然如果看不到HTML的上下文,如果不给我们更具体的描述哪一行代码无法执行,就很难准确地了解发生了什么,但这很可能是因为一个Ajax调用正在替换一堆HTML,而这些HTML会破坏所有事件处理程序。因此,当您尝试执行第二个Ajax操作时,它的click处理程序不再有效,因此不会发生任何事情
替换DOM元素将丢失附加到原始DOM元素的所有事件处理程序。使用.html()
典型的解决方案是