Ajax หน้ามันซ้อนกันค่ะ แก้ยังไงดีเหรอคะ ลองหลายวันแล้วไม่ได้สะที
คือจะให้มีตัวเช็คหน้าอยู่ในหน้า Index อะค่ะ แล้วส่งค่าหน้าว่าเป็นหน้าอะไรแล้วใช้ Ajax เรียกมา แล้วทีนี้พอเรียกหน้า login เข้ามา ก็จะให้มันเป็น Ajax เช็คกับ mysql ว่า username กับ password ผ่านหรือไม่ โค้ดอยู่ข้างล่างค่ะ
<script type="text/javascript">
//var HttPRequest = false;
function callajax(){
var HttPRequest = false;
if (window.XMLHttpRequest) { // Mozilla, Safari,...
HttPRequest = new XMLHttpRequest();
if (HttPRequest.overrideMimeType) {
HttPRequest.overrideMimeType('text/html');
}
} else if (window.ActiveXObject) { // IE
try {
HttPRequest = new ActiveXObject("Msxml2.XMLHTTP");}
catch (e) {
try {
HttPRequest = new ActiveXObject("Microsoft.XMLHTTP"); }
catch (e) {}
}
}
if (!HttPRequest) {
alert('Cannot create XMLHTTP instance');
return false;
}
}
/////////////////////////////////////////////////////////////////////////////////////////////////
function chkpage(page,pre1,pre2) {
callajax();
var url = page+'.php';
var pmeters = "pre1=" + pre1+
"&pre2=" + pre2;
HttPRequest.open('POST',url,true);
HttPRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
HttPRequest.setRequestHeader("Content-length", pmeters.length);
HttPRequest.setRequestHeader("Connection", "close");
HttPRequest.send(pmeters);
HttPRequest.onreadystatechange = function(){
if(HttPRequest.readyState == 3) // Loading Request
{
document.getElementById("pg").innerHTML = "Now is Loading...";
}
if(HttPRequest.readyState == 4) // Return Request
{
document.getElementById('headd').innerHTML = page+' : '+pre1;
document.getElementById('pg').innerHTML = HttPRequest.responseText;
//alert(HttPRequest.responseText);
}
}
}
/////////////////////////////////////////////////////////////////////////////////////////////
function Check_Login(url) {
if(document.getElementById('user').value==''){//alert("PLEASE ENTER USERNAME");
document.getElementById('user').focus();
return false;}
else if(document.getElementById('pass').value==''){
alert("PLEASE ENTER PASSWORD");
document.getElementById('pass').focus();
return false;}
else{
callajax();
var pmeters = "user=" + document.getElementById('user').value+
"&pass=" + document.getElementById('pass').value;
HttPRequest.open('POST',url,true);
HttPRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
HttPRequest.setRequestHeader("Content-length", pmeters.length);
HttPRequest.setRequestHeader("Connection", "close");
HttPRequest.send(pmeters);
HttPRequest.onreadystatechange = function(){
if(HttPRequest.readyState == 3) // Loading Request
{
document.getElementById("pg").innerHTML = "Now is Loading...";
}
if(HttPRequest.readyState == 4) // Return Request
{
alert(HttPRequest.responseText);
if(HttPRequest.responseText=="N"){
document.getElementById("pg").innerHTML = "sdkfjoeijewitj";
//alert('YOUR ACCOUNT IS NOT AVILABLE PLEASE CONTACT ADMINISTRATOR');
}
else{
alert("Y");
// chkpage(HttPRequest.responseText,'','');
}
}
}
}
}
</script>
<?
if(!$_SESSION['page']){ $p="login"; $chknew="Y"; }
else{ $p=$_SESSION['page']; }?>
<body <? if ($chknew=="Y"){ ?>onload="JavaScript:chkpage('<?=$p;?>','<?=$chknew;?>','');"
<? } ?>>
<div>
<h1><span id="headd"></span></h1></br>
</div>
<div id="pg"></div>
</body>
- -" งงมั้ยคะ พอดีคิดเองแล้วงงมาก ไม่รู้จะโหลดหน้า check page ตรงนี้ถูกรึเปล่า เพราะว่ามันใช้การได้ถ้ารับค่าเป็นหน้ามา แต่ถ้าในหน้านั้นมี ajax ซ้อนอีกทีอย่างเช่นของหน้า Login มันก็จะรัน function chklogin() แล้วพอยังไม่ทันแสดงผลมันก็เหมือนกับว่า รัน function chkpage อีกที มันก็เลยกลับมาอยู่หน้าเดิมอยู่ดีอะค่ะ
งง มั้ยงะ เราไม่รูัอธิบายเข้าใจป่าว คือเราไม่ค่อยเข้าใจโครงสร้างของมันค่ะ ช่วยทีนะคะ Please T T
ถ้าจะให้เดาปัญหานะ
เราไม่สามารถใช้ Javascript ในหน้าที่ถูก Ajax เรียกได้ เรื่องนี้มีิธิบายบนเว็บครับ ลงหาอ่านดู