【问题标题】:Is this possible to send response back to page by doing some if/else in ajax这是否可以通过在 ajax 中执行一些 if/else 来将响应发送回页面
【发布时间】:2016-06-30 09:08:03
【问题描述】:

我想知道这是否可以通过在 $.ajax 中成功从服务器获得的响应上使用一些 if/else 来发送响应。

ajax

$.ajax({

    url  : "request/register.php",
    type : "POST",
    data : 'firstName='+firstName + '&lastName='+lastName + '&userName='+userName + '&email='+email + '&password='+password + '&con_password='+con_password,
    dataType : "text",
    beforeSend : function(http){
       $('#reg').val("Submitting....");
    },
    success : function(response,status,http){
        var text = response;
        alert(text);
        if(text != "<span class=\"error\" data-icon ='&#xea0f;'>Empty Fields</span>"){
               alert("Done");             
        }else{
               alert("oOps")
        } 

    },
    error : function(http,status,error){
        alert('server error');
    }

})

注册.php

//creating a variable for error messages
 $error = "";
//creating a variable for success messages
 $success = "";
 //form validation
 if($_SERVER['REQUEST_METHOD'] == "POST"){


    $firstName    =  trim(filter_input(INPUT_POST, 'firstName'    ,FILTER_SANITIZE_STRING));
    $lastName     =  trim(filter_input(INPUT_POST, 'lastName'     ,FILTER_SANITIZE_STRING));
    $userName     =  trim(filter_input(INPUT_POST, 'userName'     ,FILTER_SANITIZE_STRING));
    $email        =  trim(filter_input(INPUT_POST, 'email'        ,FILTER_SANITIZE_EMAIL));
    $password     =  trim(filter_input(INPUT_POST, 'password'     ,FILTER_SANITIZE_STRING));
    $confirm_pass =  trim(filter_input(INPUT_POST, 'con_password' ,FILTER_SANITIZE_STRING));


   //checking for empty feilds
    if($firstName == "" || $lastName == "" || $userName == "" || $email == "" || $password == "" || $confirm_pass == ""){
        $error = "Empty Fields";
    }

    //checking username length 

    if(empty($error) && strlen($userName)<=5){
      $error = "Username must be greater than 5 characters";
    }

    //checking for username existence

     if(empty($error) && user_exist($userName)){
        $error = "Username already exist";
     }

    //email validation
     if(empty($error) && !filter_var($email,FILTER_VALIDATE_EMAIL)){
      print_r($_POST);
      $error = "Invalid Email address";
    }

    //checking for email existence

     if(empty($error) && email_exist($email)){
        $error = "Email already exist";
     }

    //checking password length
     if(empty($error) && strlen($password)<=8){
      $error = "Password must be greater than 8 characters";
    }

    //matching confirm password
   if(empty($error) && $password !== $confirm_pass){
      $error = "Password not match";
    }

    if(empty($error)){
      if(user_registration($firstName,$lastName,$userName,$email,md5($password))){
        $success = "Registered Suceessfully";
      }else{
        $error = "Something went wrong";
      }
    }

 }

  if(!empty($error)){
      echo "<span class=\"error\" data-icon ='&#xea0f;'>".$error."</span>";
    }

  if (empty($error) && !empty($success)) {
     echo "<span class=\"success\" data-icon ='&#xea10;'>".$success."</span>";
   }

如果响应类似于我想要设置的输入[type="text"] 值应该相同,用户类型和输入[type="password"] 应该为空 & 在其他情况下,如果响应类似于 i希望所有输入字段都为空..

【问题讨论】:

  • 请出示您的所有源代码。
  • 试一试json_encode($your_post_data)你的成功;

标签: php ajax


【解决方案1】:

是的,这是可能的。但随着身体可能随着时间的推移而变化,最好在HTTP/1.1 Status Codes 上执行if/else 逻辑。

例如;

在您的错误响应中,只需使用 http_response_code() 返回错误代码 400 Bad Request

http_response_code(400);

在您的成功响应中,只需返回 201 Created

http_response_code(201);

现在,在您的 jQuery 中,您只需查看返回状态代码并为最终用户做适当的事情

//[...]
success : function(response,status,http) {
    if(http.status === 201) {
       alert("User created");
    } else {
       //Assume there was an error
       //Do some error logging for the end-user
       alert("Could not create the user");
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-10-23
    • 1970-01-01
    • 1970-01-01
    • 2015-09-27
    • 2021-06-14
    • 2014-11-08
    • 1970-01-01
    相关资源
    最近更新 更多