GORAGOD.com

freelance, web developer, web designer, hosting, domain name

AJAX LOGIN แล้วให้ Refresh หน้าจอได้หรือเปล่า

คือ ทำ AJAX LOGIN เมื่อผู้ใช้ กรอกข้อมูลถูกต้องแล้ว อยากให้มัน Refresh หน้าปัจจุบันครับ สามารถทำได้หรือไม่
ผมลองใส่ javascript: document.location.reload(); มันก็ไม่ทำงานครับ
12 ก.ค. 2552 14 5,028

ใส่หลังจากอัปเดทข้อมูลแล้วภายใน Javascript ครับ

#1

มันไม่ทำงานครับ งง

ไฟล์ login.php
<?php
ob_start();
session_start();
//header("content-type: application/x-javascript; charset=tis-620");
header("content-type: text/html; charset=tis-620");
include("setting.php");
include($config["WEB"]["PATH"]."includes/function.php");
if(!$Conn = db_connect()){
 print "DB Connection fail!!!";
 exit(0);
}
$_WELCOME="
 <img src=\"".$config["WEB"]["URL"]."images/glass_bt1.gif\" width=\"60\" height=\"60\" alt=\"Welcome\" />
 <br />ยินดีต้อนรับ&nbsp;&nbsp;คุณ&nbsp;<a href=\"javascript:void(0);\"
 style=\"color:#000;\">
\$SESSION[\"login_name\"]</a><br/><a href=\"javascript:void(0);\" onclick=\"javascript: Send_logout();\"
 style=\"color:#FFF; display:block; font-weight:bold;\">
ออกจากระบบ?</a>
 ";
$_LOGIN = "
  <form name=\"frm_login\" id=\"frm_login\" action=\"javascript:Send_login();\">
    <strong>เข้าระบบ</strong><br />
     ชื่อผู้ใช้ : <input name=\"lname\" type=\"text\" id=\"lname\" size=\"10\" maxlength=\"255\" /><br />
  รหัสผ่าน : <input name=\"lpassword\" type=\"password\" id=\"lpassword\" size=\"10\" maxlength=\"255\" /><br />
  <a href=\"javascript:void(0);\" onClick=\"Send_login();\" style=\"color:#fff; text-decoration:none;
  font-weight:bold;\">
เข้าระบบ...</a> || <a href=\"javascript:void(0);\" style=\"color:#900;
  text-decoration:none; font-weight:bold;\">
ลืมรหัสผ่าน?</a><br />
  <a href=\"javascript:void(0);\" style=\"color:#fff; text-decoration:none; font-weight:bold;\">ลงทะเบียน... </a>
  </form>
 ";
$_LOGOUT = "
 <img src=\"".$config["WEB"]["URL"]."images/glass_bt1.gif\" width=\"60\" height=\"60\" alt=\"Welcome\" /><br />
    แล้วกลับมาเยือนเราอีกนะ
 ";

//ตรวจสอบการล็อกอิน
if($_GET["send_login"] == true){
 if(chk_user_state($_POST["lname"],MD5($_POST["lpassword"]))){ //เข้าระบบแล้ว
 // ส่งหน้าต้อนรับกลับไป
 $pt = '/(\$SESSION\["login_name"\])/i';
 $_WELCOME = preg_replace($pt,$_SESSION["login_name"],$_WELCOME );
 print $_WELCOME;
 print "<script language=\"javascript1.5\" type=\"text/javascript\">
 <!--
  document.location.reload();
 //-->

 </script>
";

 exit(0);
 }else{
  //ส่งหน้าให้กรอกชื่อผู้ใช้ไหม
  print $_LOGIN;
  exit(0);
 }
}

// ส่งค่าออกจากระบบมา
if($_GET["send_logout"] == true){
 user_logout();
 // แสดงหน้าส่งท้าย
 print $_LOGOUT;
 exit(0);
}
// ไม่มีการส่งค่าอะไรมา ให้แสดงฟอร์มล็อกอิน
if($_SESSION["login_state"]){ //เข้าระบบแล้ว
 // ส่งหน้าต้อนรับกลับไป
 $pt = '/(\$SESSION\["login_name"\])/i';
 $_WELCOME = preg_replace($pt,$_SESSION["login_name"],$_WELCOME );
 print $_WELCOME;
 exit(0);
}else{
 //ส่งหน้าให้กรอกชื่อผู้ใช้ไหม
 print $_LOGIN;
 exit(0);
}
@mysql_close($Conn);
?>

#2

ใส่ที่ Javascript สิครับ หลังจากรับค่ากลับด้วย Ajax แล้ว ไปใส่ที่ php มันก็ไม่ทำงานสิ
#3

ใส่ใน javascript แล้ว ทำให้ไม่สามารถล็อกอินได้ครับ

 <script language="javascript1.5" type="text/javascript">
  <!--
   //โหลดหน้าล็อกอิน
   doCallAjax("$CONFIG["WEB"]["URL"]includes/login.php","null","div_frm_login");
   //alert("ssssssssss");
   // ฟังก์ชั่น Send_login
   function Send_login(){ 
    var pmeter ="";
    if(document.getElementById("lname").value.length == 0){
     alert("กรุณาใส่ชื่อผู้ใช้ก่อน");
     return false;
    }
    if(document.getElementById("lpassword").value.length == 0){
     alert("กรุณาใส่รหัสผ่านก่อน");
     return false;
    }
    pmeter = "lname=" + encodeURI(document.getElementById("lname").value ) + "&lpassword=" + encodeURI( document.getElementById("lpassword").value );
    doCallAjax('$CONFIG["WEB"]["URL"]includes/login.php?send_login=true',pmeter,'div_frm_login');

    // ใส่ตรงนี้แล้วมันเกิดข้อผิดพลาด เหมือนมันไม่คอย
    document.location.reload();


   }
   //ฟังก์ชั่น Send_logout
   function Send_logout(){
    if(confirm("คุณมีความมั่นใจแค่ไหนที่ต้องการออกจากระบบ")){
     doCallAjax('$CONFIG["WEB"]["URL"]includes/login.php?send_logout=true','','div_frm_login');
    }
   }
  //-->

 </script>
#4

เราก็มีปัญหาเหมือนกันเราไม่รู้ว่าจะเอา document.location.reload(); ไปไว้ตรงใหนเหมือนกัน...อยากให้ logout แล้วพอเสร็จ ถึงจะ  refresh
อ่ะ   เราเอาตัวอย่าง login  ajax มาจากเวปนี้อ่ะ รบกวนตอบหน่อยนะ

#5

ไว้ในส่วนของ Javascript ตรงฟังก์ชั่น onReadyStateChaned
#6

ลองแล้วค่ะ

 

<script language=Javascript>
function check_user(username, passwd, action) {
     var cancle=false;
     if (action=='login') {
          if (username.length==0) {
               alert('กรุณาป้อน Username ก่อน');
               document.login_form.user.focus();  
               cancle=true;
          } else if (passwd.length==0) {
               alert('กรุณาป้อน Password ก่อน') ;
               document.login_form.passwd.focus(); 
               cancle=true;
          }
     }
     if (cancle==false) {
          var req = Inint_AJAX();
          req.onreadystatechange = function () {
     
               if (req.readyState==4) {
                    if (req.status==200) {
                         var ret=req.responseText; //รับค่ากลับมา
                         document.getElementById("login_table").innerHTML=ret;   
                    }  
               }

      document.location.reload(); //ใส่ตรงนี้แล้วจะไม่มาเลยค่ะ

          };
          req.open("POST", "check_user.php"); //สร้าง connection
          req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=tis-620"); // set Header
          req.send("user="+username+"&passwd="+passwd+"&action="+action); //ส่งค่า

     } 
 
}


//โหลดครั้งแรก
//check_user('', '', '');

</script>

#7

มันจะโหลดไม่ยอมหยุดเลยอ่ะค่ะ
#8

ทำได้แล้วค่ะโดยการเพิ่มนี่ไป  
window.location.reload( false );

#9

if (req.status==200) {
   var ret=req.responseText; //รับค่ากลับมา
   document.getElementById("login_table").innerHTML=ret;   
   window.location.reload(); // ใส่หลังจากรับค่ากลับมาเรียบร้อยแล้วเท่านั้นครับ

#10

ลองใช้แบบที่คุณบอกแล้วค่ะ แต่ว่าก็ยัง refresh ตลอดเวลาอย่างเดิมเลยค่ะ....พอจะมีวิธีมั้ย
ตอนแรกที่เราลองใช้
window.location.reload(false);
มันก็หยุดนะ แต่พอคนที่ กรอก user หรือ pass ผิดจะไม่ยอมแสดง
ช่วยหน่อยนะเราทำไม่ได้จริงๆ
#11

ผู้ก็ไม่รู้ว่าออกแบบไว้ยังไงนะ ลองศึกษาจากที่ทำไว้สำเร็จแล้วดีมั้ย

ตัวอย่างบนเว็บ หรือไม่ก็ GCMS
#12

ผมทดลองแล้วใช้ได้แล้วครับ
1. ใน Checkuser.php  หลังจากที่ check user ผ่านถูกต้องแล้ว เราไม่ต้องให้ echo อะไรออกมานะครับ
    แต่เรา กำหนดใหม่ให้ echo อะไรก็ได้ที่เราต้องการ เช่นผมกำหนดว่า
     if (isset($user)) {
     echo "true";

   ให้ echo คำว่า true ครับ
2. ให้กลับไปที่ login.php ครับ ตรงบรรทัด

     if (cancle==false) {
          var req = Inint_AJAX();
          req.onreadystatechange = function () {
               if (req.readyState==4) {
                    if (req.status==200) {
                         var ret=req.responseText; //รับค่ากลับมา
                         document.getElementById("login_table").innerHTML=ret;
      if (ret=='true'){document.location.reload();}
                    }
               }
          };
          req.open("POST", "checkuser.php"); //สร้าง connection
          req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=tis-620"); // set Header
          req.send("user="+username+"&passwd="+passwd+"&action="+action); //ส่งค่า

ให้เพิ่มตรงตัวสีแดงเข้าไปครับ ก็จะใช้ให้ reload ได้ครับผม

#13

ถ้าไม่แน่ใจก็ให้ลอง Alert(ret);
ดูก่อนก็ได้ว่ามันส่งค่าอะไรกลับมาแล้วเราก็ตรวจสอบค่านั้นครับแล้วก็สั่งให้ reload
#14
ความคิดเห็น
ไฟล์อัปโหลด ชนิด jpg, jpeg ขนาดไฟล์ไม่เกิน 2M
^