JqueryAjax和php逻辑

时间:2015-11-27 22:28:14

标签: javascript php jquery

嘿伙计我有一个问题从PHP获取值。我知道我们在这类问题上遇到很多问题,但我需要帮助。

这是我的javascript

$( document ).ready(function() {
    $(".loading_bg").hide();
});

$( document ).ajaxStart(function() {
  $(".loading_bg").fadeIn("slow");
});

function validate_user() {

            //We get data input
            var username = $('.username').val();
            var password = $('.password').val();

            //We create a datastring ex: functions.php?function=validate_user&username=username&password=password
            var datastring = 'function=validate_user' + '&username=' + username + '&password=' + password; 

            //The json Ajax Request
            $.ajax({
                type: 'POST',
                dataType: 'json',
                url: '@loginAPI/functions.php',
                data: datastring,
                success: function(result) {
                    console.log(result);
                    $(".loading_bg").fadeOut("slow");
                },
                error: function(xhr, status){
                    console.log(status);
                }

            });
            return false;

        }

这是我的php

<?php
require_once('../@configs/db_connect.php');
//Lets send our data back to index
if(isset($_POST['function'])) {
    $user = $_POST['username'];
    $password = $_POST['password'];
    echo login::validate_user($user, $password);   
}


class login {

    static function validate_user($username, $password) {


        //Call a new default connection
        $db = db::connect();

        //Prepare our sql
        $stmt = $db->prepare("SELECT * FROM Accounts WHERE username = :username AND password = :password");

        //Bind our values to the SQL statement
        $stmt->bindValue(':username', $username, PDO::PARAM_STR);
        $stmt->bindValue(':password', $password, PDO::PARAM_STR);
        $stmt->execute();

        //Get number of affected rows
        $results = $stmt->rowCount();

        //If to check if we can find any row with username and password
        if($results === 1) {
            //return json_encode("valid account");
        } else {
            return json_encode($username);
        }

    }

}
?>

当我执行请求时,我从我的var中得到一个未经解决的错误,我不知道如何解决它,如果可能,有人可以帮助我。

我认为它与我的$_POST有关..因为如果用login::validate_user("teste","teste);运行php我可以获得json结果..

2 个答案:

答案 0 :(得分:1)

其他一切都很好,你没有正确地将数据传递给ajax调用。您正在创建查询字符串但是如果要在php中的$ _POST中捕获它,则必须传递JSON对象,如果要在$ _GET数组中捕获,则可以附加到url。我已经通过以下两种方式纠正了你的功能:

function validate_user() {

    //We get data input
    var username = $('.username').val();
    var password = $('.password').val();

    //We create a datastring ex: functions.php?function=validate_user&username=username&password=password
    var datastring = { 'function': 'validate_user', 'username': username, 'password': password }

    //The json Ajax Request
    $.ajax({
        type: 'POST',
        dataType: 'json',
        url: '@loginAPI/functions.php',
        data: datastring,
        success: function(result) {
            console.log(result);
            $(".loading_bg").fadeOut("slow");
        },
        error: function(xhr, status){
            console.log(status);
        }

    });
    return false;

}

如果要在服务器端的$ _​​GET中捕获数据

function validate_user() {
    //We get data input
    var username = $('.username').val();
    var password = $('.password').val();

    //We create a datastring ex: functions.php?function=validate_user&username=username&password=password
    var datastring = 'function=validate_user' + '&username=' + username + '&password=' + password; 

    //The json Ajax Request
    $.ajax({
        type: 'POST',
        dataType: 'json',
        url: '@loginAPI/functions.php?' + datastring,
        data: {},
        success: function(result) {
            console.log(result);
            $(".loading_bg").fadeOut("slow");
        },
        error: function(xhr, status){
            console.log(status);
        }

    });
    return false;

}

这是PHP代码

<?php
require_once('../@configs/db_connect.php');
//Lets send our data back to index
if(isset($_GET['function'])) {
    $user = $_GET['username'];
    $password = $_GET['password'];
    echo login::validate_user($user, $password);   
}
.... // Remaining Class will come here

答案 1 :(得分:0)

我很抱歉打扰你们所有人,真正的问题是我的表格输入费用..我忘了上课...谢谢大家,再一次,我很抱歉让你们因为这样一个愚蠢的问题而浪费时间