Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/80.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
Javascript 如何循环抛出要在网站上显示的数组对象?_Javascript_Jquery_Ajax - Fatal编程技术网

Javascript 如何循环抛出要在网站上显示的数组对象?

Javascript 如何循环抛出要在网站上显示的数组对象?,javascript,jquery,ajax,Javascript,Jquery,Ajax,我正在使用jQuery/Ajax验证表单。在验证表单时,它会成功地显示错误,但不会显示在网站上。我只能在控制台日志中看到它。我知道这是因为我的js代码。如何在我的网站上显示它 Ajax在响应选项卡中返回数据: {"error":true, "0":"Your name should be 2-20 characters long", "1":"Your email address required", "2":"Your message subject required", "3":"Your

我正在使用jQuery/Ajax验证表单。在验证表单时,它会成功地显示错误,但不会显示在网站上。我只能在控制台日志中看到它。我知道这是因为我的js代码。如何在我的网站上显示它

Ajax在响应选项卡中返回数据:

{"error":true,
"0":"Your name should be 2-20 characters long",
"1":"Your email address required",
"2":"Your message subject required",
"3":"Your message required",
"4":"Invalid captcha"}
我正在使用以下JS代码:

$("#contactForm").submit(function(e) {
    e.preventDefault();
    formData = $(this).serialize();
    $.ajax({
        url : 'form-validation.php',        
        type : 'POST',
        dataType : 'json',
        data : formData,
        beforeSend : function () {
            $("#form-submit").text('Validation...');
            $("#form-submit").prop('disabled', true);
        }, 
        success : function ( result ) {
            $("#form-submit").text('Send Message');
            $("#form-submit").prop('disabled', false);  

            var len = 0
            for ( var x in result) {    
                                alert(len);         
                $("#formResult").html('<div class="alert alert-danger">'+result[x]+'</div>');
                len++;

            }
            // for ( x in result ) {                    
            //  $("#formResult").html('<div class="alert alert-danger">'+result[x]+'</div>');
            //  if( result['error'] == false ) {
            //      $("#formResult").html('<div class="alert alert-danger">Your message has been sent. I will contact with you asap.</div>'); 
            //      $('#contactForm')[0].reset();   
            //      setTimeout(function () {
            //          window.location.href = 'http://site/contact.php';
            //      }, 5000);
            //  }
            // }

        }
    });
});
<?php

$formName       = htmlspecialchars($_POST['form-name']);
$formEmail      = htmlspecialchars($_POST['form-email']);
$formSubject    = htmlspecialchars($_POST['form-subject']);
$formMessage    = htmlspecialchars($_POST['form-message']);
$googleCaptcha  = htmlspecialchars($_POST['g-recaptcha-response']);
$secret         = 'secret';
$verifyResponse = file_get_contents('https://www.google.com/recaptcha/api/siteverify?secret='.$secret.'&response='.$googleCaptcha);
$responseData   = json_decode($verifyResponse);

$data           = array();
$data['error']  = false;

if( isset($formName, $formEmail, $formSubject, $formMessage, $googleCaptcha) ) {
    if( empty($formName) && empty($formEmail) && empty($formSubject) && empty($formMessage) && empty($googleCaptcha) ) {
        $data[]     = 'All fields are required';        
        $data['error']      = true;
    } else {
        if( empty($formName)) {
            $data[]     = 'Your name required';
            $data['error']          = true;
        } elseif( strlen($formName) < 2 || strlen($formName) > 20 ) {
            $data[]     = 'Your name should be 2-20 characters long';
            $data['error']          = true;
        } elseif( is_numeric($formName)) {
            $data[]     = 'Your name must be alphabic characters';
            $data['error']          = true;
        }

        if( empty($formEmail)) {
            $data[]     = 'Your email address required';
            $data['error']          = true;
        } elseif( !filter_var($formEmail, FILTER_VALIDATE_EMAIL)) {
            $data[]     = 'Your email is incorrect';
            $data['error']          = true;
        }

        if( empty($formSubject)) {
            $data[]     = 'Your message subject required';
            $data['error']  = true;
        } elseif( strlen($formSubject) < 2 || strlen($formSubject) > 500 ) {
            $data[]     = 'Your message subject should be 2-500 characters long';
            $data['error']      = true;
        } elseif( is_numeric($formSubject)) {
            $data[]     = 'Your message subject must be alphabic characters';
            $data['error']      = true;
        }

        if( empty($formMessage)) {
            $data[]     = 'Your message required';
            $data['error']      = true;
        } elseif( strlen($formMessage) < 2 || strlen($formMessage) > 1500 ) {
            $data[]     = 'Your message should be 2-1500 characters long';
            $data['error']      = true;
        } elseif( is_numeric($formMessage)) {
            $data[]     = 'Your message must be alphabic characters';
            $data['error']      = true;
        }

        if( empty($googleCaptcha) ) {
            $data[]     = 'Invalid captcha';
            $data['error']      = true;
        } elseif(!$responseData->success) {
            $data[]     = 'Captcha verfication failed';
            $data['error']      = true;
        }
    }

    if( $data['error']  === false) {

        $to = "creativeartbd@gmail.com";
        $subject = "Contac Form- Creativeartbd.com";

        $message = "<b>$formMessage</b>";       

        $header = "From:creativeartbd.com \r\n";        
        $header .= "MIME-Version: 1.0\r\n";
        $header .= "Content-type: text/html\r\n";

        $retval = mail ($to,$subject,$message,$header);
        if( $retval ) {
            $data[] = 'Your message has been sent. I will contact with you asap.';
            $data['error']      = false;
        } else {
            $data[] = "Your message didn't sent";
            $data['error']      = true;
        }       
    }
}

echo json_encode( $data );
$("#form-submit").prop('disabled', false);  
            for ( x in result ) {                   
                $("#formResult").html("<div class='alert alert-danger'>"+result[x]+"</div>");
                if( result['error'] == false ) {
                    $("#formResult").html('<div class="alert alert-danger">Your message has been sent. I will contact with you asap.</div>'); 
                    $('#contactForm')[0].reset();   
                    setTimeout(function () {
                        window.location.href = 'http://www.creativeartbd.com/portfoli/contact.php';
                    }, 5000);
                }
            }
$(“#联系人表单”)。提交(功能(e){
e、 预防默认值();
formData=$(this.serialize();
$.ajax({
url:“form validation.php”,
键入:“POST”,
数据类型:“json”,
数据:formData,
beforeSend:函数(){
$(“#表单提交”).text('验证…');
$(“#表单提交”).prop('disabled',true);
}, 
成功:功能(结果){
$(“#表单提交”).text('Send Message');
$(“#表单提交”).prop('disabled',false);
var len=0
对于(结果中的变量x){
警报(len);
$(“#formResult”).html(“”+result[x]+“”);
len++;
}
//对于结果中的(x){
//$(“#formResult”).html(“”+result[x]+“”);
//如果(结果['error']==false){
//$(“#formResult”).html('您的邮件已发送,我将尽快与您联系');
//$('#contactForm')[0]。重置();
//setTimeout(函数(){
//window.location.href=http://site/contact.php';
//      }, 5000);
//  }
// }
}
});
});
PHP代码:

$("#contactForm").submit(function(e) {
    e.preventDefault();
    formData = $(this).serialize();
    $.ajax({
        url : 'form-validation.php',        
        type : 'POST',
        dataType : 'json',
        data : formData,
        beforeSend : function () {
            $("#form-submit").text('Validation...');
            $("#form-submit").prop('disabled', true);
        }, 
        success : function ( result ) {
            $("#form-submit").text('Send Message');
            $("#form-submit").prop('disabled', false);  

            var len = 0
            for ( var x in result) {    
                                alert(len);         
                $("#formResult").html('<div class="alert alert-danger">'+result[x]+'</div>');
                len++;

            }
            // for ( x in result ) {                    
            //  $("#formResult").html('<div class="alert alert-danger">'+result[x]+'</div>');
            //  if( result['error'] == false ) {
            //      $("#formResult").html('<div class="alert alert-danger">Your message has been sent. I will contact with you asap.</div>'); 
            //      $('#contactForm')[0].reset();   
            //      setTimeout(function () {
            //          window.location.href = 'http://site/contact.php';
            //      }, 5000);
            //  }
            // }

        }
    });
});
<?php

$formName       = htmlspecialchars($_POST['form-name']);
$formEmail      = htmlspecialchars($_POST['form-email']);
$formSubject    = htmlspecialchars($_POST['form-subject']);
$formMessage    = htmlspecialchars($_POST['form-message']);
$googleCaptcha  = htmlspecialchars($_POST['g-recaptcha-response']);
$secret         = 'secret';
$verifyResponse = file_get_contents('https://www.google.com/recaptcha/api/siteverify?secret='.$secret.'&response='.$googleCaptcha);
$responseData   = json_decode($verifyResponse);

$data           = array();
$data['error']  = false;

if( isset($formName, $formEmail, $formSubject, $formMessage, $googleCaptcha) ) {
    if( empty($formName) && empty($formEmail) && empty($formSubject) && empty($formMessage) && empty($googleCaptcha) ) {
        $data[]     = 'All fields are required';        
        $data['error']      = true;
    } else {
        if( empty($formName)) {
            $data[]     = 'Your name required';
            $data['error']          = true;
        } elseif( strlen($formName) < 2 || strlen($formName) > 20 ) {
            $data[]     = 'Your name should be 2-20 characters long';
            $data['error']          = true;
        } elseif( is_numeric($formName)) {
            $data[]     = 'Your name must be alphabic characters';
            $data['error']          = true;
        }

        if( empty($formEmail)) {
            $data[]     = 'Your email address required';
            $data['error']          = true;
        } elseif( !filter_var($formEmail, FILTER_VALIDATE_EMAIL)) {
            $data[]     = 'Your email is incorrect';
            $data['error']          = true;
        }

        if( empty($formSubject)) {
            $data[]     = 'Your message subject required';
            $data['error']  = true;
        } elseif( strlen($formSubject) < 2 || strlen($formSubject) > 500 ) {
            $data[]     = 'Your message subject should be 2-500 characters long';
            $data['error']      = true;
        } elseif( is_numeric($formSubject)) {
            $data[]     = 'Your message subject must be alphabic characters';
            $data['error']      = true;
        }

        if( empty($formMessage)) {
            $data[]     = 'Your message required';
            $data['error']      = true;
        } elseif( strlen($formMessage) < 2 || strlen($formMessage) > 1500 ) {
            $data[]     = 'Your message should be 2-1500 characters long';
            $data['error']      = true;
        } elseif( is_numeric($formMessage)) {
            $data[]     = 'Your message must be alphabic characters';
            $data['error']      = true;
        }

        if( empty($googleCaptcha) ) {
            $data[]     = 'Invalid captcha';
            $data['error']      = true;
        } elseif(!$responseData->success) {
            $data[]     = 'Captcha verfication failed';
            $data['error']      = true;
        }
    }

    if( $data['error']  === false) {

        $to = "creativeartbd@gmail.com";
        $subject = "Contac Form- Creativeartbd.com";

        $message = "<b>$formMessage</b>";       

        $header = "From:creativeartbd.com \r\n";        
        $header .= "MIME-Version: 1.0\r\n";
        $header .= "Content-type: text/html\r\n";

        $retval = mail ($to,$subject,$message,$header);
        if( $retval ) {
            $data[] = 'Your message has been sent. I will contact with you asap.';
            $data['error']      = false;
        } else {
            $data[] = "Your message didn't sent";
            $data['error']      = true;
        }       
    }
}

echo json_encode( $data );
$("#form-submit").prop('disabled', false);  
            for ( x in result ) {                   
                $("#formResult").html("<div class='alert alert-danger'>"+result[x]+"</div>");
                if( result['error'] == false ) {
                    $("#formResult").html('<div class="alert alert-danger">Your message has been sent. I will contact with you asap.</div>'); 
                    $('#contactForm')[0].reset();   
                    setTimeout(function () {
                        window.location.href = 'http://www.creativeartbd.com/portfoli/contact.php';
                    }, 5000);
                }
            }

$data
数组更新为这样

$data['messages'][]='Your messages required'

无论您在何处使用此
$data[]
。因此,它将提供适当的json格式

您的json格式不正确您应该这样做

{
  "messages": [
    "Your name should be 2-20 characters long",
    "Your email address required",
    "Your message subject required",
    "Your message required",
    "Invalid captcha"
  ],
  "error": true
}
用于打印错误消息

$("#formResult").html("");
for (var x in result.messages) {
    $("#formResult").append('<div class="alert alert-danger">' + result.messages[x] + '</div>');
}
$(“#formResult”).html(“”);
for(result.messages中的变量x){
$(“#formResult”).append(“”+result.messages[x]+“”);
}

在这个问题上@shabbir,你可以做一件事

在php的
$data
数组中添加适当的键

然后在JS代码中捕捉它。根据具体情况,您可以在页面上显示错误。 这里有一个简单的想法

$data['message'] = "First name is required";
$data['error'] = true;
因此,在JS代码中,更新ajax的
success
部分,如下所示:

success : function ( result ) {
    if(result.error != true)
    {
        // catch some element of the page to show your error using jquery something like:
        $('.error').text(result.message);
    }
    else
    {
        // Here your existing code will go... 
    }
}

你能提到代码中出现错误的地方吗?我已经更新了我的问题。让我试试这个。但是否可以使用我的PHP代码获取消息?好吧,我尝试使用你的代码。现在显示现有的错误消息。例如:如果发生错误,则在我再次提交表单后,错误消息会反复显示。如果我使用
$data[]是否可以显示数据=''
?如果我使用html而不是append,会有什么问题吗?但是可以使用我的PHP代码获取消息吗?如果你想将所有错误消息都显示在一起,那么你可以循环PHP数组,然后以ajax响应的形式在数组中发送组合消息。现在,我正在使用你的php代码风格,现在它一个接一个地显示消息。检查我的最新问题。好的@ShibbirAhmed让我给你看。同时,若我的回答对你们有帮助,我可以投票吗?通过这个更新的代码,你们能在表格上看到至少一条错误信息吗?