.text()只工作一次

时间:2013-08-11 16:47:40

标签: javascript jquery

我似乎无法让.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);
    });
}

我可能错过了一些非常简单的事情,似乎根本看不到它,希望有人可以。

1 个答案:

答案 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.
});