Доступ к значениям JSON в JQUERY / AJAX на основе условия - PullRequest
0 голосов
/ 15 октября 2018

Пожалуйста, наберитесь терпения, потому что я знаю, что на этот вопрос можно было ответить, но я не смог его найти.Я работал над проектом, и в последнее время я только начал использовать AJAX.

Мой JSON исходит из PHP, который включает ошибки и успех, теперь вопрос заключается в том, как получить доступ к успеху (если регистрация прошла успешно,отображать как текст (не предупреждение)) и отображать ошибки при сбое регистрации.

Какие условия следует использовать?

<div class="remodal" data-remodal-id="RegisterModal">
  <div class="popup-1">
      <div class="popup-content" id="register_container">
          <div id="register_title" class="popup-title text-purple">Sign Up</div>
          <div class="reg-notification">
              <p>You Successfully registered to our website and now you can login and use our services</p>
              <a href="feed.php" class="popup-link">Continue</a>
          </div>
          <div id="json"></div>
          <form id="register-form" action="register.php" method="POST">
              <div class="form-grp">
                  <!--<label>Username</label>-->
                  <input type="text" id="username" name="username" placeholder="Username">
              </div>
              <div class="form-grp">
                  <input type="email" name="register_email" id="register_email" placeholder="Email">
              </div>
              <div class="form-grp">
                  <input type="password" id="register_password" name="register_password"  placeholder="Password">
              </div>
              <div class="form-grp">
                  <input type="password" id="confirm_password" name="confirm_password"  placeholder="Retype Password">
              </div>
              <div class="btn-grp">
                  <button type="submit" name="submit" class="button-purple" id="do_register">Sign Up</button>
                  <button class="button-white" style="margin-left: 30px;" data-remodal-target="LoginModal">Login to access</button>
              </div>
          </form>
      </div>

Это мой PHP ниже

  if (strlen($password) >= 8 && strlen($password) <= 60) {


                    if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
                        $account->addUser($username, $password, $email);
                        if ($account->userExist()) {
                            $message['email'] = "Email Address Is Already Registered!";
                        } else {
                            $account->create();
                            $message['type'] = "success";
                         }
                    } else {
                        $message = 'Invalid email!, Please enter a valid Email';
                    }

header('Content-Type: application/json');
$response = ['message' => $message];
echo json_encode($response);
 // echo json_encode($message);
//echo $message;

и это мой AJAX

$.ajax({
            type: 'POST',
            url: 'register.php',
            dataType: 'json',
            data: formData,
            success: function (data) {
                $("#json").html(data["message"]);
                //response = response.slice(0, -1);
                //response = JSON.parse(response);
                //var json = JSON.parse(response);
                //var resdata = response;
                //var json = $.parseJSON(response);
                //if (resdata) {

                    //alert(resdata['success']);
                    //alert(json['success']);
                    // $("#register-form").addClass("remove-form");
                    // $("#register_container").addClass("register-container-active");
                    // $("#register_title").html("Register was Successful");
                    // $(".reg-notification").addClass("show-reg-notification");
                //}else if (resdata['email']) {
                    //alert(resdata['email']);
                //}
                    //alert(json['email']);
                    //$("#msg").html(json.email);
                //}
                console.log(response);
            },
            error:function(error){
                console.log(error);
            }
        });

Поскольку вы можете видеть, что все прокомментированные мной коды являются ошибочными кодами, мне нравится отображать сообщение от PHP в моем #json ID.

Что якак сделать, это получить код «success», закодированный из PHP в мой HTML через AJAX, если регистрация пользователя прошла успешно, также вывести ошибку «email», если пользователь существует.

Я понятия не имею, какое условие использовать в AJAX для проверки этого или как это сделать, и я знаю, что это будет что-то простое.

Но я могу оказаться в голове, чтобы понять это ... как я продолжаю смотреть: (

Ответы [ 2 ]

0 голосов
/ 15 октября 2018

Сначала вам нужно изменить свой php-ответ.

$response = [];
if (strlen($password) >= 8 && strlen($password) <= 60) {
    if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
        $account->addUser($username, $password, $email);
        if ($account->userExist()) {
            $response['type'] ="error";
            $response['msg'] = "Email Address Is Already Registered!";
        } else {
            $account->create();
            $response['type'] = "success";
            $response['msg']="You are signed in successfully";
        }
    } else {
        $response['type'] ="error";
        $response['msg'] = 'Invalid email!, Please enter a valid Email';
    }
    echo json_encode($response);
}

// output

{"type":"success","msg":"You are signed in successfully"}

// ajax

$.ajax({
            type: 'POST',
            url: 'register.php',
            dataType: 'json',
            data: formData,
            success: function (data) {
                $("#json").html(data["msg"]);

                //get the response type simply as data['type'] this will give you success or error

                console.log(data);
            },
            error:function(error){
                console.log(error);
            }
        });
0 голосов
/ 15 октября 2018
   $.ajax({
                type: 'POST',
                url: 'register.php',
                dataType: 'json',
                data: formData,
                success: function (data) {
                    console.log(data.message.email);//that will print email already registered 


                var result=data.message.email;
                if(result=="success"){
                   $("#json").empty();//incase it has previous data
                   $("#json").append(result);//that will append data in your div

}
else{

    $("#json").empty();//incase it has previous data
                   $("#json").append(result);//that will append data in your div
}

                },
                error:function(error){
                    console.log(error);
                }
            });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...