我似乎无法让.text()
函数在我的函数中正常运行。
每隔一段时间,页面都会正确显示,但大多数时候,文字不会改变。该页面以显示“正在等待”的<p>
标记开头,然后.text()
中的初始beforeSend:
正常工作,文字更改为“处理请求...”,但从那时起在{,.text()
函数似乎不起作用。
我已添加console.log
以查看msg
变量是否正确填充,但是.text()
仍未更改<p>
标记第二次。它似乎在所有浏览器中都是一样的。
这是我的功能:
function sendrequest(first, last, email) {
var request = $.ajax({
url:"/core/ajax/register.php",
type:"POST",
data: {uf:first,ul:last,ue:email},
beforeSend: function(){
forms.regFor.fadeOut(100, function(){
$('p#msg').text('Processing request...');
});
}
});
request.done(function(data){
var msg;
if (data == 1){
msg = "Thank you "+first+", your request has been sent.";
console.log('Registered successfully');
}else if (data == 2){
msg = "It appears that you have already signed up.";
console.log('Already signed up');
}else{
msg = "There has been an error.";
console.log('Error on submission');
}
console.log(msg);
$('p#msg').text(msg);
});
}
我可能错过了一些非常简单的事情,似乎根本看不到它,希望有人可以。
答案 0 :(得分:3)
尝试删除fadeOut
来电中的beforeSend
。
在所有可能的情况下,fadeOut在AJAX调用之前没有完成。因此,您的AJAX done
被触发,然后您的fadeOut完成并且您的fadeout回调发生,从而破坏了您的AJAX done
更改。
beforeSend: function(){
$('p#msg').text('Processing request...');
}
如果您认为必须拥有fadeOut,请将您的AJAX调用放入fadeOut回调中。
forms.regFor.fadeOut(100, function(){
var request = $.ajax({
url:"/core/ajax/register.php",
type:"POST",
data: {uf:first,ul:last,ue:email},
beforeSend: function(){
$('p#msg').text('Processing request...');
}
});
request.done = // etc.
});