Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/239.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 使用Ajax帖子(有点困惑)_Javascript_Php_Jquery_Ajax_Wordpress - Fatal编程技术网

Javascript 使用Ajax帖子(有点困惑)

Javascript 使用Ajax帖子(有点困惑),javascript,php,jquery,ajax,wordpress,Javascript,Php,Jquery,Ajax,Wordpress,我在wordpress插件中使用ajax帖子来提交和验证表单值。这是我第一次使用ajax,但我对它的工作原理有点困惑。这是我的ajax帖子: jQuery.ajax({ type:"post", dataType:"json", url: myAjax.ajaxurl, data: {action: 'submit_data', info: in

我在wordpress插件中使用ajax帖子来提交和验证表单值。这是我第一次使用ajax,但我对它的工作原理有点困惑。这是我的ajax帖子:

           jQuery.ajax({

                type:"post",
                dataType:"json",
                url: myAjax.ajaxurl,
                data: {action: 'submit_data', info: info},
                success: function(response) {
                    if (response.type == "success") {

                        alert("success");
                    }
                    else {

                        alert("fail");
                    }
                }
            });
这会将数据发布到名为submit_data的php函数,如下所示:

function submit_data() {

    $nameErr = $emailErr = $phoneErr = $commentErr = "";
    $full = explode("&", $_POST["info"]);
    $fname = explode(":", $full[0]);
    $name = $fname[1];
    $femail = explode(":", $full[1]);
    $email = $femail[1];
    $fphone = explode(":", $full[2]);
    $phone = $fphone[1];
    $fcomment = explode(":", $full[3]);
    $comment = $fcomment[1];

    if ((empty($name)) || (strlen($name) < 4)){

        $nameErr = "Please enter a name";
    }
    else if (!preg_match("/^[a-zA-Z ]*$/", $name)) {

        $nameErr = "Please ensure you have entered your name and surname";
    }


    if (empty($email)) {

        $emailErr = "Please enter an email address";
    }
    else if (!preg_match("/([\w\-]+\@[\w\-]+\.[\w\-]+)/", $email)) {

        $emailErr = "Please ensure you have entered a valid email address";
    }


    if (empty($phone)) {

        $phoneErr = "Please enter a phone number";
    }
    else if (!preg_match("/(?:\(?\+\d{2}\)?\s*)?\d+(?:[ -]*\d+)*$/",$phone)) {

        $phoneErr = "Please ensure you have entered a valid phone number";
    }


    if ((empty($nameErr)) && (empty($emailErr)) && (empty($phoneErr)) && (empty($commentErr))) {

        $conn = mysqli_connect("localhost", "Mikey", "Change0", "plugindatadb");
        mysqli_query($conn, "INSERT INTO data (Name, Email, Phone, Comment) VALUES ('$name', '$email', '$phone', '$comment')");
    }
    else {

        $errorArray = array();
        if (!empty($nameErr)) {

            $errorArray["nameErr"] = $nameErr;
        }
        if (!empty($emailErr)) {

            $errorArray["emailErr"] = $emailErr;
        }
        if (!empty($phoneErr)) {

            $errorArray["phoneErr"] = $phoneErr;
        }
        if (!empty($commentErr)) {

            $errorArray["commentErr"] = $commentErr;
        }

    }

    die();
}
函数提交_数据(){
$nameErr=$emailErr=$phoneErr=$commentErr=“”;
$full=爆炸(&,$_POST[“info”]);
$fname=分解(“:”,$full[0]);
$name=$fname[1];
$femail=explode(“:”,$full[1]);
$email=$femail[1];
$fphone=explode(“:”,$full[2]);
$phone=$fphone[1];
$fcomment=explode(“:”,$full[3]);
$comment=$fcomment[1];
if((空($name))| |(strlen($name)<4)){
$nameErr=“请输入名称”;
}
如果(!preg_match(“/^[a-zA-Z]*$/”,$name))为else{
$nameErr=“请确保您已输入姓名”;
}
如果(空($email)){
$emailErr=“请输入电子邮件地址”;
}
如果(!preg\u match(“/([\w\-]+\@[\w\-]+\.\w\-]+)/”,$email)){
$emailErr=“请确保您输入了有效的电子邮件地址”;
}
如果(空($phone)){
$phoneErr=“请输入电话号码”;
}
如果(!preg\u match(“/(?:\(?\+\d{2}\)?\s*)?\d+(?:[-]*\d+*$/”,$phone)){
$phoneErr=“请确保您输入了有效的电话号码”;
}
if((empty($nameErr))&&&(empty($emailErr))&&(empty($phoneErr))&&&(empty($commentErr))){
$conn=mysqli_connect(“localhost”、“Mikey”、“Change0”、“plugindatadb”);
mysqli_query($conn,“插入数据(名称、电子邮件、电话、注释)值(“$Name”、“$Email”、“$Phone”、“$Comment”)”);
}
否则{
$errorArray=array();
如果(!empty($nameErr)){
$errorArray[“nameErr”]=$nameErr;
}
如果(!empty($emailErr)){
$errorArray[“emailErr”]=$emailErr;
}
如果(!empty($phoneErr)){
$errorArray[“phoneErr”]=$phoneErr;
}
如果(!empty($commentErr)){
$errorArray[“commentErr”]=$commentErr;
}
}
模具();
}

我的问题是,如果submit_data函数在没有错误的情况下成功运行,那么代码是否会运行ajax success函数?或者ajax成功函数是否在遇到提交数据结束之前运行?

ajax中的成功函数在收到服务器的响应后运行

i、 e.
提交数据
完成执行后

错误: 请求失败时要调用的函数。该函数接收三个参数:jqXHR(在jQuery 1.4.x中,XMLHttpRequest)对象、描述发生的错误类型的字符串和可选的异常对象(如果发生)。第二个参数(除null外)的可能值为“timeout”、“error”、“abort”和“parserror”。当HTTP错误发生时,ErrorSprown接收HTTP状态的文本部分,例如“未找到”或“内部服务器错误”


成功 请求成功时要调用的函数。函数传递三个参数:从服务器返回的数据,根据dataType参数格式化;描述状态的字符串;和jqXHR(在jquery1.4.x中,XMLHttpRequest)对象


您又发布了吗?因此,如果我随后将提交数据函数中的错误消息返回到ajax帖子,我是否可以说:echo json_encode(“errors[]”=>“$errorarray”),然后在ajax帖子的成功函数中通过“errors”引用它?