php - 从 json 数组中检索消息

标签 php javascript jquery web

我想在用户注册时检查用户名的可用性。我正在从事前端工作。后台代码已经给我了。

这些是signup.php中的php代码

if (isset($_GET['chkusername']))
JSON_username_avail($_GET['chkusername']);

function JSON_username_avail($username) {
    $ret = array();
    print json_encode(validate_username($username, $ret));
    die();
}

function validate_username($username, & $retval_arr) {
    if ($username == NULL)
        $retval_arr['E_UserName'] = "NULL_USERNAME";
    else if (!username_validation($username))
        $retval_arr['E_UserName'] = "INVALID_USERNAME";
    else if (!data_not_exists("user", "username", $username, TRUE))
        $retval_arr['E_UserName'] = "USERNAME_EXISTS";
    return $retval_arr;
}

function username_validation($user) {
    $username = str_split($user);
    foreach($username as $i) {
        $i = ord($i);
        if ($i >= 48 and $i <= 57)
            continue;
        if ($i >= 65 and $i <= 90)
            continue;
        if ($i >= 97 and $i <= 122)
            continue;
        return FALSE;
    }
    return TRUE;
}


function data_not_exists($table, $field, $data, $CSense = FALSE) {
    $conn = connect_db();
    $data = filter_var($data, FILTER_SANITIZE_STRING);
    if ($CSense == TRUE)
        $sql = "SELECT * FROM ".$table.
    " WHERE ".$field.
    "='".$data.
    "'";
    else
        $sql = "SELECT * FROM ".$table.
    " WHERE upper(".$field.
    ")='".$data.
    "'";
    $result = mysqli_query($conn, $sql);

    switch ($result - > num_rows) {
    case 0:
        return TRUE;
        break;
    case 1:
        return FALSE;
        break;
    default:
        die("500 Internal Server Error: 122");

    } //switch

}

现在我对 php 不太了解。我创建了一个 javascript 函数来将用户名发送到 signup.php 页面进行验证。

这是我的功能

function submit_form() {
    var u = document.getElementById("username").value;
    $.post("signup.php", {
            "chkusername": u
        },
        function (data) {
            var x = data; //here i dont know how to get the return string. Whether it is NULL_USERNAME OR INVALID_USERNAME OR USERNAME_EXISTS.

        }, "json");
}

这里我得到 x 的值作为 [object Object]。 但我需要将返回消息存储在变量 x 中。我想知道它是 NULL_USERNAME 还是 INVALID_USERNAME 或者 USERNAME_EXISTS。请帮助我。

最佳答案

用户名已发布,但在 PHP 中您尝试使用 $_GET 访问它,更改为:

if (isset($_POST['chkusername']))
JSON_username_avail($_POST['chkusername']);

而且您的验证逻辑看起来也不正确,如果用户名有效且可用怎么办?我将添加一个 else 子句并设置一个 success 变量:

function JSON_username_avail($username) {
    $ret = array();
    print json_encode(validate_username($username));
    die();
}

function validate_username($username) {
    $retval_arr = array('success' => false, 'message' => '');

    if ($username == NULL)
        $retval_arr['message'] = "NULL_USERNAME";
    else if (!username_validation($username))
        $retval_arr['message'] = "INVALID_USERNAME";
    else if (!data_not_exists("user", "username", $username, TRUE))
        $retval_arr['msessage'] = "USERNAME_EXISTS";
    else
        $retval_arr['success'] = true;
    return $retval_arr;
}

和ajax:

if(!data.success){
    console.log(data.message);
} else {
    // valid and available
}

关于php - 从 json 数组中检索消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17109119/

相关文章:

javascript - Raphael自定义属性(Arc)导致变形的圆

php - 如何使用 PHP 从 XML "href"标记中提取 "link"属性?

php - 使用 jQuery 从多个表单字段创建 JSON 对象

javascript - 计数器的中间值

javascript - addEventListener 回调中的 this 关键字

javascript - Rails/Angular JS : Ngclick not appearing to work

javascript - 防止链接的默认值取决于 Ajax 响应

javascript - Jquery 鼠标事件与 Z-index

PHP:检查电子邮件是否包含 "@"和 "."

php - 为什么某些 Composer 软件包在同一版本中会相互冲突?