A-AA+then

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

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

14 ความคิดเห็น

ใส่หลังจากอัปเดทข้อมูลแล้วภายใน 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
^