【问题标题】:Using Ajax posts (Bit confused)使用 Ajax 帖子(有点困惑)
【发布时间】:2014-04-05 12:10:40
【问题描述】:

我在 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();
}

我的问题是,如果 submit_data 函数成功运行且没有错误,那么代码是否会运行 ajax 成功函数?还是在遇到submit_data结束之前运行ajax成功函数?

【问题讨论】:

  • 你又发了吗?

标签: javascript php jquery ajax wordpress


【解决方案1】:

AJAX 中的成功函数在收到来自服务器的响应后运行。

即在submit_data 完成执行后。

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


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

Reference

【讨论】:

  • 所以如果我要从 submit_data 函数返回错误消息到 ajax 帖子,我可以说:
  • echo json_encode("errors[]" => "$errorarray") 然后在我的 ajax 成功函数中通过 "errors" 引用它?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-06-21
  • 1970-01-01
  • 2011-09-21
  • 2019-12-12
  • 1970-01-01
  • 1970-01-01
  • 2013-06-19
相关资源
最近更新 更多