duangu1033 2013-06-14 13:02
浏览 42
已采纳

从json数组中检索消息

I want to check the username availability while users register. I am working on the front end. The backend code was given to me.

These are the php code in signup.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

}

Now I dont know that much of php. I created a javascript function to send the username to the signup.php page for validation.

Here is my function

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");
}

here i am getting the value of x as [object Object]. But i need to store the return message in variable x. I want to know whether it is NULL_USERNAME OR INVALID_USERNAME OR USERNAME_EXISTS. Kindly help me with that.

  • 写回答

2条回答 默认 最新

  • douji9734 2013-06-14 13:13
    关注

    The username is POSTed but in the PHP you try to access it with $_GET, change to:

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

    Also your validation logic doesn't look right, what if the username is valid and available? I would add an else clause and set a success variable:

    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;
    }
    

    and the ajax:

    if(!data.success){
        console.log(data.message);
    } else {
        // valid and available
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 各位请问平行检验趋势图这样要怎么调整?说标准差差异太大了
  • ¥15 delphi webbrowser组件网页下拉菜单自动选择问题
  • ¥15 wpf界面一直接收PLC给过来的信号,导致UI界面操作起来会卡顿
  • ¥15 init i2c:2 freq:100000[MAIXPY]: find ov2640[MAIXPY]: find ov sensor是main文件哪里有问题吗
  • ¥15 运动想象脑电信号数据集.vhdr
  • ¥15 三因素重复测量数据R语句编写,不存在交互作用
  • ¥15 微信会员卡等级和折扣规则
  • ¥15 微信公众平台自制会员卡可以通过收款码收款码收款进行自动积分吗
  • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?
  • ¥15 gdf格式的脑电数据如何处理matlab