javascript - 使用 PHP(Codeigniter) 将变量从 Controller 传递到 javascript

标签 javascript php ajax codeigniter-3

我有注册模块,到目前为止我已经完成了所有字段的验证(字段为:姓名、电子邮件、用户名和密码),检查电子邮件和用户名是否已存在。

如果用户名已存在,则尝试添加建议。我已完成在用户名中添加前缀,但在将变量传递给 JavaScript 并将其显示在我的 View 中时遇到问题

这是我的 Controller

$get_username = clean_data($_POST['username']);
$where = array(
"username"  => $get_username
);

$check_username = $this->Crud_model->count_result('username','users',$where);
if($check_username > 0)
{
    $fetch_username = $this->Crud_model->user_exists('users',$where);

    $last_username = strrev((int)strrev($fetch_username));  // returns last numeric value of username
    if($last_username){
    $count = count($last_username);//counts number of digit
    $str = substr($username, 0, -($count));;// subtract numeric value from last of username
}
$newstr = $last_username+1;

$username= $get_username.$newstr;
echo json_encode("existing");
// echo "var username = ". json_encode($username).";";

}
else
{
    $insert_user = array(
    'first_name'                => clean_data(ucwords($_POST['first_name'])),
    'last_name'                 => clean_data(ucwords($_POST['last_name'])),
    'profile_picture'           => "profile-picture.jpg",
    'username'                  => $get_username,
    'email'                     => $_POST['email'],
    'password'                  => hash_password($_POST['password']),
    'status'                    => 1,
    );

    $this->Crud_model->insert('users',$insert_user);


    echo json_encode("success");
}

这是我的 ajax javascript

$(document).ready(function(){
  $("#registration-form").on('submit',function(e){
    $.ajax({
      url: base_url+"formsubmit/new_form_submit",
      type: "POST",
      data: $(this).serialize(),
      success:function(data)
      {
        var result = JSON.parse(data);
        if(result === "success")
        {
          $("h5").html("");
          success_message("#success-message-new-account","Create Successful!");
          window.setTimeout(function(){location.href=base_url},2000);
        }
        else if(result === "existing")
        {
          $("h5").html("");
          success_message("#existing-message-account","You may use!".$username);
          // window.setTimeout(function(){location.href=base_url},2000);
        }
        else{
          $("#first_name_error").html(result.first_name_error);
          $("#last_name_error").html(result.last_name_error);
          $("#username_error").html(result.username_error);
          $("#email_error").html(result.email_error);
          $("#password_error").html(result.password_error);
        }
      },
      error: function(data) {
        alert('error');
      }
    })
    e.preventDefault();
  })
})

这是我的观点

<div id="existing-message-account"></div>
<div class="wrap-input100 validate-input">

    <input class="input100" type="text" name="first_name" id="first_name">

    <span class="label-input100">First</span>

</div>

<div class="wrap-input100 validate-input">

    <input class="input100" type="text" name="last_name" id="last_name">

    <span class="label-input100">Last</span>

</div>

用户填写注册表后。它将在我的 javascript 中进行处理,现在将检查注册的用户名是否已经存在。如果不是,那么它将保存在我的表中。如果存在,则会添加一个数字前缀。

示例

In my table users. I have existing username abcd, if the user register abcd then there would be a message "Username is already taken, you may use abcd1"

问题:如何将变量 $username 传递到我的 JavaScript 中?

注意:我尝试了这种方法,更改了 echo json_encode("existing");进入这个 echo json_encode($username)。我的 javascript else if(result === $username)... 该消息将不再起作用。

最佳答案

希望这对您有帮助:

对于现有状态记录,请执行以下操作:

$data['username'] = $username;
$data['status'] = 'existing';
echo json_encode($data);
exit;

对于成功状态记录返回如下

$data['username'] = $username;
$data['status'] = 'success';
echo json_encode($data);
exit;

你的ajax 成功部分应该有这样的代码:

  var result = JSON.parse(data);
  if(result.status === "success")
  {
    $("h5").html("");
    success_message("#success-message-new-account","Create Successful!");
    window.setTimeout(function(){location.href=base_url},2000);
  }
  else if(result.status === "existing")
  {
    $("h5").html("");
    success_message("#existing-message-account","You may use!" + result.username);
    // window.setTimeout(function(){location.href=base_url},2000);
  }

关于javascript - 使用 PHP(Codeigniter) 将变量从 Controller 传递到 javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51746146/

相关文章:

javascript - 如何从一个模板创建多个不同语言的页面?

javascript - 当用户注销其中一个选项卡时,如何自动从所有打开的选项卡中注销用户?

ajax - 如何防止 Varnish 缓存 ajax?

javascript - 导航 map 时向 Google map 添加标记

javascript - React.js - componentWillReceiveProps 仅每隔 this.props 更新一次

javascript - 打开新模态时关闭所有其他模态

php 脚本不更新 mysql 行

php - 如何编写此 SQL 语句来获取广告并发布? (PHP/MySQL)

java - 简单的 restful JSON POST,以 java 作为服务器,jquery 作为客户端

javascript - 计算填充的输入数