नमस्ते कृपया मुझे नहीं पता कि मैं यहाँ क्या गलत कर रहा हूँ। मैं लॉगिन पेज के लिए AJAX का उपयोग करने का प्रयास कर रहा हूं। अजाक्स काम कर रहा है लेकिन सफल प्रतिक्रिया मेरे द्वारा निर्दिष्ट फ़ाइल से नहीं है। मुझे login_validate.php से प्रतिक्रिया पढ़ने के लिए इसकी आवश्यकता है लेकिन मुझे dbconnect.php से प्रतिक्रिया मिल रही है जो उस तरह काम नहीं करना चाहिए।

यह index.php है जो कि अजाक्स पेज है

jQuery(document).ready(function(){
 jQuery(".login").submit(function(e){
    e.preventDefault();
    var formData = jQuery(this).serialize();
    $.ajax({
        type:"POST",
        url:"login_validate.php",
        data:formData,
        success: function(response){
            /** alert (response);
         }, error: function(jqXHR, textStatus, errorThrown){
                alert('error');
         } **/       
            if(response == "True")
            {
                //alert('Yes');
                //$.jGrowl("Loading File Please Wait......", { sticky: true });
                $.jGrowl("Welcome... Redirecting", { header: 'Login Successful' });
                var delay = 3000;
                setTimeout((function(){ window.location = 'welcome.php'  }), delay);

            }else{
                //alert('No');
                $.jGrowl("Invalid Login Details", { header: 'Access Denied' });
            }
        }
    });
    return false;
});

});                         

यह है dbconnect.php

<?php
// connect to database
$hostname = "localhost";
$username = "root";
$password = "";
$dbname = "cbt2";


 $conn = new mysqli($hostname, $username, $password, $dbname);
 // check connection
 if ($conn->connect_error) {
    die ('Error connecting to database' . $conn->connect_error);
 } else {
    echo "Connection Successful";
 }
 ?> 

यह login_validate.php है

<?php
require 'admin/dbconnect.php';
require 'admin/core.php';

if(loggedin())
{
    header('location:welcome.php');
}
if (isset($_POST['loginbtn'])){
    $name=$_POST['username'];
    $pass= $_POST['password'];

    $qry="SELECT * FROM student WHERE username='$name' AND password='$pass' LIMIT 1";
    $qrycheck=$conn->query($qry);
    if ($qrycheck->num_rows > 0){
        while($fetch = $qrycheck->fetch_assoc()){
            $class=$fetch['class'];
            $fullname=$fetch['fullname'];
            $username=$fetch['username'];
            $dept=$fetch['dept'];
            $id=$fetch['id'];

            $_SESSION['stdid']=$id;
            $_SESSION['user']=$username;
            $_SESSION['name']=$fullname;
            $_SESSION['class']=$class;
            $_SESSION['dept']=$dept;

        }
        echo "True";
    } else {
        echo "False";
    }
}
?>

तो मुझे जो सफल प्रतिक्रिया मिल रही है वह echo 'Connection Successful' है और यह echo 'True' होना चाहिए

3
Amjos.com 10 जुलाई 2018, 16:45

2 जवाब

सबसे बढ़िया उत्तर

dbconnect.php . से अपना अन्य कथन हटा दें

<?php
// connect to database
$hostname = "localhost";
$username = "root";
$password = "";
$dbname = "cbt2";




$conn = new mysqli($hostname, $username, $password, $dbname);
 // check connection
 if ($conn->connect_error) {
    die ('Error connecting to database' . $conn->connect_error);
 } 
 ?>

जब कनेक्शन सफल होता है तो आपका dbconnect.php "कनेक्शन सफल" गूँजता है जिसे पहले अजाक्स द्वारा पढ़ा जाता है, और यह वह नहीं है जिसकी आप प्रतीक्षा कर रहे हैं। डेटाबेस से कनेक्शन सफल होने पर हर बार इको या लॉग इन करने की भी अनुशंसा नहीं की जाती है।

अद्यतन करें:

अपना login_validate.php भी अपडेट करें:

<?php
require 'admin/dbconnect.php';
require 'admin/core.php';


if (isset($_POST['username'], $_POST['password'])){
    $name=$_POST['username'];
    $pass= $_POST['password'];

    $qry="SELECT * FROM student WHERE username='$name' AND password='$pass' LIMIT 1";
    $qrycheck=$conn->query($qry);
    if ($qrycheck->num_rows > 0){
        while($fetch = $qrycheck->fetch_assoc()){
            $class=$fetch['class'];
            $fullname=$fetch['fullname'];
            $username=$fetch['username'];
            $dept=$fetch['dept'];
            $id=$fetch['id'];

            $_SESSION['stdid']=$id;
            $_SESSION['user']=$username;
            $_SESSION['name']=$fullname;
            $_SESSION['class']=$class;
            $_SESSION['dept']=$dept;

        }
        echo "True";
    } else {
        echo "False";
    }
}
?>

जब आप AJAX से php फ़ाइल को कॉल कर रहे हैं, तो वहां आपको कहीं रीडायरेक्ट करने की आवश्यकता नहीं है, इसे बस कुछ वापस करना चाहिए। साथ ही मुझे लगता है कि यह जांचना बेमानी है कि $_POST['loginbtn'] सेट है या नहीं।

3
godot 13 जुलाई 2018, 13:28

AJAX कॉल का उत्तर वह सब कुछ होगा जो आपकी PHP स्क्रिप्ट से आउटपुट होता है

तो आपको echo "Connection Successful"; को यहां से हटाना होगा

<?php
// connect to database
$hostname = "localhost";
$username = "root";
$password = "";
$dbname = "cbt2";


 $conn = new mysqli($hostname, $username, $password, $dbname);
 // check connection
 if ($conn->connect_error) {
    die ('Error connecting to database' . $conn->connect_error);
 //} else {
    //echo "Connection Successful";
 }
 ?> 
1
RiggsFolly 10 जुलाई 2018, 16:50