这可能是this topic的重复,但我必须重振它,因为我的问题似乎比这更深一些。我目前正在使用 ajaxForm()向PHP脚本提交4个问题测验,接收结果,然后将其填充回DIV。触发beforeSend
函数,将信息发送到ajax.php
脚本。 beforeSend
还在测验容器中显示加载图形。然后complete
函数正确触发,因为ajax.php
返回要填充回DOM的HTML。那时,一切都停止了。下一行是调用slideUp
加载div,然后在quizContainer中显示返回的信息。
此时如果我输入一个javascript alert
,它总是会触发,这意味着complete
至少会触发它,但是对加载div的jQuery引用完全被忽略。这是处理提交的javascript文件的代码 - 处理此问题的部分是"处理测验提交":
$(document).ready(function () {
// Get rid of the message box after 15 seconds
setTimeout(function() {
$('#message').slideUp('fast');
}, 10000);
// Handle the Course List LIs
$('#courseList li').on('click', function () {
// Get the background color as it's set initially
var color = $(this).attr('oColor');
jQuery('div', this).toggle('slow', function () {
if ($(this).is(":hidden")) {
$(this).css('background-color', color);
}
});
// Change the background to be the same as the content background when it's expanded
if ($(this).is(":hidden")) {
$(this).css('background-color', '#33CC66');
} else {
$(this).removeAttr('style');
}
});
// Handle the quiz submission
jQuery.fn.exists = function(){return this.length>0;}
if ($('#quizForm').exists()) {
$('#quizForm').ajaxForm({
beforeSend: function() {
$('#quizContainer').slideUp('fast', function () {
$('#loading').show();
});
},
complete: function(xhr, theStatus) {
alert(theStatus);
$('#loading').slideUp('fast', function () {
$('#quizContainer').html(xhr.responseText);
$('#quizContainer').show();
});
}
});
}
});
如果有人希望看到它的实际应用,我可以提供更多信息和临时登录来访问它。我目前正在使用jQuery 1.8.1(。)
感谢您的帮助! 乔恩
答案 0 :(得分:0)
我认为complete
函数的第一个参数是xhr.responseText
而不是xhr
对象,它实际上是第三个参数。尝试从.responseText
功能中删除complete:
。