Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在窗体上遇到错误时关闭加载动画_Php_Jquery_Ajax_Forms - Fatal编程技术网

Php 在窗体上遇到错误时关闭加载动画

Php 在窗体上遇到错误时关闭加载动画,php,jquery,ajax,forms,Php,Jquery,Ajax,Forms,我有一个简单的电子邮件表单,在单击提交时打开加载动画(jQuery): onClick="$('.loader').css('visibility', 'visible'); jQuery表单处理程序将ajax数据发送到PHP邮件文件进行处理和错误检查,以关闭动画: if(trim($name) == 'Name *') { exit('<div class="error_message">You must enter your name.</div> <styl

我有一个简单的电子邮件表单,在单击提交时打开加载动画(jQuery):

onClick="$('.loader').css('visibility', 'visible');
jQuery表单处理程序将ajax数据发送到PHP邮件文件进行处理和错误检查,以关闭动画:

if(trim($name) == 'Name *') {
exit('<div class="error_message">You must enter your name.</div>
<style type="text/css">.loader { visibility: hidden !important; }</style>');
if(trim($name)==“name*”){
退出('您必须输入您的姓名。
.loader{可见性:隐藏!重要;}');
处理,但仅处理第一个表单错误。任何后续错误都不会打开/关闭加载程序


我不明白为什么如果PHP脚本将visibility属性更改为hidden,为什么该属性无法恢复为visible,因为每次点击submit按钮,加载程序都应该是可见的!我承认我是一个PHP noob,所以请不要敲打我的分数。

或者,你可以先收集所有错误,然后结束,最后是我将它们全部删除,然后退出:

$errors = array(); // an array that will hold the errors
// errors, push them inside the container
if(trim($name) == 'Name *') $errors[] = '<div class="error_message">You must enter your name.</div>';
if(trim($email) == 'Email something') $errors[] = '<div class="error_message">You must enter your email.</div>';

if(!empty($errors)) { // if there are errors
    // add the style on the first position
    array_unshift($errors, '<style type="text/css">.loader { visibility: hidden !important; }</style>');
    echo implode("\n", $errors); // join them all
    exit;
}
$errors=array();//将保存错误的数组
//如果出现错误,请将其推入容器中
如果(trim($name)='name*')$errors[]='您必须输入您的姓名';
如果(trim($email)=“发送邮件”)$errors[]=“您必须输入您的电子邮件。”;
如果(!empty($errors)){//如果有错误
//在第一个位置添加样式
数组_unshift($errors,'.loader{visibility:hidden!important;}');
echo内爆(“\n”,$errors);//将它们全部连接起来
出口
}

感谢Ghost在jQuery AJAX调用的成功函数中使用loader visibility属性。我在PHP服务器端使用了它,它不会更新页面

$.post(action, {

        name: $('#name').val(),
        email: $('#email').val(),
        phone: $('#phone').val(),
        comments: $('#comments').val()

    },

        function(data){

            document.getElementById('message').innerHTML = data;
            $('#message').fadeIn(200);
            $('.hide').hide(0);
            $('#submit').removeAttr('disabled');

            if (data != '') {
                $('.loader').css('visibility','hidden'); //hide the loader animation on error
}

我喜欢你的建议,并会尝试一下。验证我的数据的顺序If-Else语句对我微不足道的PHP编码技能更有效:)@hillcreative-sure-man我希望这会很好。那封电子邮件只是一个例子,只需按照你希望的方式将其更改为适合你的代码库。尝试收集数组,但仍然存在问题无法重新打开加载程序进行最终提交(错误更正后)我的目标是在通过PHP发送邮件时,让加载程序动画在经过验证的表单上运行。@hillcreative im假设这是一个ajax操作,对吗?您是否尝试在正确加载DOM元素后设置可见性?很可能是在加载后,而不是在单击后,将可见性绑定到visible@hillcreative在成功块上触发css可见性后,您是否尝试过?