ajax和json_encode()表单验证错误

时间:2017-07-05 16:57:53

标签: php json ajax

如果表单有验证错误,我能够显示成功和失败消息,但我不知道如何让错误在这个php代码中显示一个错误:

$errors = array();
    $response = array();

    if(empty($_POST['name'])) {

        $errors['name'] = "Name required";
    }

    if(empty($_POST['email'])) {

        $errors['email'] = "Email required";
    }

    $response['errors'] = $errors;

    if($errors) {

        $response['success'] = false;
        $response['message'] = "Fail";

    } else {

        $reponse['success'] = true;
        $response['message'] = "<div class='alert alert-success'>Article added</div>";
    }

    echo json_encode($response);

我需要改变的路线可能是:

$response['message'] = "Fail";

2 个答案:

答案 0 :(得分:0)

我不确定我是否理解您的问题,但如果目标是让用户获取遇到的错误列表,那么您所做的一切都非常正确。

错误在

$response['errors']

所以$ response的json_encoded结果允许Javascript(客户端)将这些错误作为数组浏览,并正确打印它们。

您不应该返回HTML格式的文本。它是View(客户端)根据CSS规则呈现结果的角色。

所以我想说这里没有什么可以改变的。成功== false时,客户必须打印{ 'errors' : { ... }}

中的错误

如果您不想/不想编辑客户端Javascript /呈现页面,则必须将字符串与<br><ul><li>连接起来,并在$response['message']中提供此字符串{1}}。它很难看,但是有约束力的人仍然有解决方案。

答案 1 :(得分:0)

您是否尝试在检测到错误消息时添加错误消息     $ errors = array();         $ response = array();

    if(empty($_POST['name'])) {

        $errors['name'] = "Name required";
       response['message'] = "<div class='alert alert-danger'>Name Required</div>";
    }

    if(empty($_POST['email'])) {

  $errors['email'] = "Email required";
 response['message'] = "<div class='alert alert-danger'>Email Required</div>";
    }

    $response['errors'] = $errors;

    if($errors) {

        $response['success'] = false;
       // $response['message'] = "Fail"; we added the message during the error detection

    } else {

        $response['success'] = true;
        $response['message'] = "<div class='alert alert-success'>Article added</div>";
    }

    echo json_encode($response);