Php jquerypost问题

Php jquerypost问题,php,jquery,forms,post,Php,Jquery,Forms,Post,我有一个表单,当我点击提交时,它会触发一个脚本 守则的一部分是: if(hasError == false) { $(this).hide(); $("#myForm").fadeOut("fast", function(){ $("#myForm").before('<img src="../images/loading.gif" alt="Loading" id="loadingImage" />');

我有一个表单,当我点击提交时,它会触发一个脚本

守则的一部分是:

        if(hasError == false) {
        $(this).hide();
        $("#myForm").fadeOut("fast", function(){
            $("#myForm").before('<img src="../images/loading.gif" alt="Loading" id="loadingImage" />');
        });

        $.post("mail.php",
            { emailFrom: emailFromVal, emailName: nameVal, emailMessage: messageVal },
                function(data){
                    $("#loadingImage").fadeOut("fast", function() {                
                        $("#loadingImage").before('<p>Your message has been sent. Cheers!</p>');                                            
                    });
                }
             );
    }
if(hasError==false){
$(this.hide();
$(“#myForm”).fadeOut(“快速”,函数(){
美元(“#我的表格”)。之前(“”);
});
$.post(“mail.php”,
{emailFrom:emailFromVal,emailName:nameVal,emailMessage:messageVal},
功能(数据){
$(“#加载图像”).fadeOut(“快速”,函数(){
$(“#加载图像”)。之前(“您的邮件已发送。干杯!

”); }); } ); }
提交表单时,加载图像将显示。。。留下来

如果我使用Firebug,在显示加载图像时,在控制台中输入:

$("#loadingImage").fadeOut("fast", function() {                
                        $("#loadingImage").before('<p>Your message has been sent. Cheers!</p>');        
$(“#加载图像”).fadeOut(“快速”,函数(){
$(“#加载图像”)。之前(“您的邮件已发送。干杯!

”);
图像消失,文本出现

为什么?

非常感谢


注意:电子邮件是发送的

问题是,在使用jQuery方法绑定所有DOM元素后,会添加新元素。动态元素需要在加载后进行绑定。最快的解决方案是在页面上添加HTML,以便jQuery可以在页面加载时绑定元素

<img src="../images/loading.gif" alt="Loading" id="loadingImage" style="display:none" />

创建img后,您的第一次淡出将结束。您应该执行以下操作:

if(hasError == false) {
        $(this).hide();
        $("#myForm").fadeOut("fast", function(){
            $("#myForm").before('<img src="../images/loading.gif" alt="Loading" id="loadingImage" />');
            $.post("mail.php", { emailFrom: emailFromVal, emailName: nameVal, emailMessage: messageVal },
                function(data){
                    $("#loadingImage").fadeOut("fast", function() {                
                        $("#loadingImage").before('<p>Your message has been sent. Cheers!</p>');                                            
                    });
                }
             );        
        });
}
if(hasError==false){
$(this.hide();
$(“#myForm”).fadeOut(“快速”,函数(){
美元(“#我的表格”)。之前(“”);
$.post(“mail.php”,{emailFrom:emailFromVal,emailName:nameVal,emailMessage:messageVal},
功能(数据){
$(“#加载图像”).fadeOut(“快速”,函数(){
$(“#加载图像”)。之前(“您的邮件已发送。干杯!

”); }); } ); }); }
如您所见,我们将
$.post()
调用移到了第一个
fadeOut()
回调函数中


希望这有帮助。干杯

回调传递给
$.post()
只有在请求成功时才会执行-mail.php是否返回200 OK?谢谢各位。我已经厌倦了这两种解决方案,但它没有任何帮助。我仍然显示加载图像;并发送电子邮件。不确定如何使用FireBug…但看起来没有错误。此外,POST mail.php返回200 OK。但“响应”选项卡中没有任何内容。..为了在FireBug的响应选项卡中显示一些内容,您必须从mail.php发送一些文本。可能在脚本的末尾是“Messages Sent”。此外,您可能希望在执行$(“#loadingImage”)之前添加一个警报,以验证代码是否正在回调中执行。淡出,例如:警报(“单击确定后,图像应该消失”);抱歉,伙计们。这是可行的。我尝试使用谷歌Chrome,我确信缓存系统有问题……我已经将您的两种解决方法应用到了一起。1-我已经在我的页面中添加了一个img标签,并且我已经按照Edgar的建议更改了脚本(也不确定是否有任何影响)。非常感谢您在这方面的快速帮助。