Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,037

HOME > PHP > PHP Forum > ajax ใช้กับ firefox ไม่ได้ แต่ใช้กับ IE ได้ ช่วยเช็คให้หน่อยนะค่ะ



 

ajax ใช้กับ firefox ไม่ได้ แต่ใช้กับ IE ได้ ช่วยเช็คให้หน่อยนะค่ะ

 



Topic : 048952

Guest




พอดีว่าเพิ่งหัดเขียน ajax ค่ะ ลองเปิดใช้กับ ie ก็ได้ผลแต่พอใช้กับ firefox ทำไมไม่ได้ผล ช่วยเช็คโค้ดให้หน่อยนะค่ะ

Code (JavaScript)
function ajaxLoad (method, URL, data, displayId){
var ajax = null;
if(window.XMLHttpRequest) {
	ajax = new XMLHttpRequest();
}
else if(window.ActiveXObject){
	ajax = new ActiveXObject("Microsoft.XMLHTTP");
}

//======
	if(ajax == null){
	alert("Your Browser doesn't support Ajax");
	return;
	}
	
	ajax.open(method, URL,true);
	ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
	ajax.onreadystatechange = function(){
		if(ajax.readyState==4 && ajax.status==200){
			var type = ajax.getResponseHeader("content-type");
			type = type.toLowerCase();
			if(type.match("text/javascript"))
			eval(ajax.responseText);
			else{
			var el = document.getElementById(displayId);
			el.innerHTML  = ajax.responseText;}
		}
	}
	ajax.send(data);
}


มีปุ่มเรียกฟังก์ชันนี้ค่ะ
Code (JavaScript)
function ajaxCall(){
var URL = "check.php";
URL += "?rand="+ Math.random();
var userlog = document.getElementById('userlog').value;
var passlog = document.getElementById('passlog').value;
var data = "userlog="+ userlog +"&passlog="+ passlog;
ajaxLoad('POST',URL,data,'dv');
}


check.php
Code (PHP)
session_start();

	include ("inc/connect.php");
	$user = $_POST["userlog"];
	$pass =  base64_encode($_POST["passlog"]);
	if(empty($user))
	{
		exit("กรุณากรอกชื่อผู้ใช้");
	}
	if(empty($pass))
	{
		exit("กรุณากรอกรหัสผ่าน");
	}
	$sql = "select * from member where m_user = '$user' and m_pass = '$pass'";
	$query =mysql_query($sql)or die(mysql_error());
	$num= mysql_num_rows($query);
	$row = mysql_fetch_array($query);
	if($num == 1)
	{
		$_SESSION['m_user']= $user;
		$_SESSION['m_status']= $row['m_status'];
	header("content-type: text/javascript;");
	echo "alert('เข้าสู่ระบบเรียบร้อยแล้ว');";
	echo "window.location.reload();";
	}
	else
	{
		echo "ข้อมูลไม่ถูกต้อง";
	}					


ปล.เพิ่งเคยตั้งกระทู้ที่นี่ ถ้าผิดพลาดก็ขออภัยด้วยนะค่ะ



Tag : PHP, Ajax







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2010-09-18 02:26:42 By : starter View : 2521 Reply : 14
 

 

No. 1

Guest


ที่ไม่ได้ผล มันแจ้งอะไรหรือเปล่าครับ ถ้าหากมันแจ้งว่า
Your Browser doesn't support Ajax ตามที่เขียนโปรแกรมไว้ ก็แปลว่า ตัวแปร ajax==null
ก็ให้ตรวจดูว่า ทำไมมัน null

ใน ช่วง if แรก สร้าง ตัวแปร ajax ถ้าในIE ใช้ได้ น่าจะผิดพลาดตรงแถวๆนี้

Code
var ajax = null;
if(window.XMLHttpRequest) {
ajax = new XMLHttpRequest();
}
else if(window.ActiveXObject){
ajax = new ActiveXObject("Microsoft.XMLHTTP");
}


ถ้าในIE ใช้ได้ ก็คงผิดตรง if ไม่ผิดตรง else

ผิดตรง if มีสองคำสั่งคือ if(window.XMLHttpRequest) และ ajax = new XMLHttpRequest(); ตรวจคร่าวๆ ดูทั้งสองคำสั่งด้วยการเพิ่ม คำสั่ง alert เข้าไป เพื่อให้โปรแกรม แสดงว่า เข้ามาในลูป if นี้แล้ว และ แสดง ค่าของตัวแปร ajax ออกมา

Code
var ajax = null;
if(window.XMLHttpRequest) {
ajax = new XMLHttpRequest();
alert("firefox "+ajax);
}
else if(window.ActiveXObject){
ajax = new ActiveXObject("Microsoft.XMLHTTP");
}


ลองรันดู หากมี alert ออกมา เป็น firefox [object XMLHttpRequest] แปลว่าไม่น่าจะผิดพลาดในตอนนี้
หาก ไม่มี alert เลย แปลว่า window.XMLHttpRequest เป็นเท็จ คำสั่ง if(window.XMLHttpRequest) ผิด
หาก หาก alert เฉพาะ "firefox" เฉยๆ แปลว่า ajax มีค่าเป็น null คำสั่ง ajax = new XMLHttpRequest(); ผิด

ที่ผมดูคร่าวๆ ในช่วง if นี้ ไม่น่าจะผิด จึงมีอีกสาเหตุหนึ่งคือ ไฟร์ฟอกซ์ ที่คุณใช้ทดสอบ อาจจะไม่สนับสนุน ajaxจริงๆ มันเก่ามากเกินไปหรือเปล่า ผมใช้รุ่น 3 อยู่ ทดสอบเฉพาะช่วง if ที่ว่านั้ ไม่มีปัญหา






แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2010-09-18 09:23:37 By : สกล
 


 

No. 2

Guest


ขอบคุณที่มาตอบนะค่ะ
Quote:
ที่ไม่ได้ผล มันแจ้งอะไรหรือเปล่าครับ

ไม่แจ้งอะไรเลยค่ะ

มีเรื่องแปลกเรื่องนึง ลองใส่คำสั่ง alert ใน if ผลปรากฏว่าคำสั่งทำงานทั้ง IE แล้วก็ Firefox เลยค่ะ
คราวนี้ยิ่งงงไปกันใหญ่

Quote:
ที่ผมดูคร่าวๆ ในช่วง if นี้ ไม่น่าจะผิด จึงมีอีกสาเหตุหนึ่งคือ ไฟร์ฟอกซ์ ที่คุณใช้ทดสอบ อาจจะไม่สนับสนุน ajaxจริงๆ มันเก่ามากเกินไปหรือเปล่า ผมใช้รุ่น 3 อยู่ ทดสอบเฉพาะช่วง if ที่ว่านั้ ไม่มีปัญหา


บราวเซอร์ที่ใช้ firefox3 IE7 ค่ะ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2010-09-19 02:41:32 By : starter
 

 

No. 3



โพสกระทู้ ( 21 )
บทความ ( 0 )



สถานะออฟไลน์


Quote:
มีเรื่องแปลกเรื่องนึง ลองใส่คำสั่ง alert ใน if ผลปรากฏว่าคำสั่งทำงานทั้ง IE แล้วก็ Firefox เลยค่ะ
คราวนี้ยิ่งงงไปกันใหญ่


มัน alert ออกมาว่ายังไงครับ เหมือนกันทั้งสองโปรแกรมหรือเปล่า ถ้าใช่น่าจะเป็นคำสั่ง if ผิดครับ เพราะที่ผมใส่ให้นั้น มันต้องalertในfirefoxเท่านัน

อ้อ ผมเห็นแล้ว คุณอาจจะใส่ปีกกาปิดไม่ครบนะครับ

Code
if(window.XMLHttpRequest) {
ajax = new XMLHttpRequest();
}
else if(window.ActiveXObject){
ajax = new ActiveXObject("Microsoft.XMLHTTP");
}
}//ผมว่าต้องมีปีกกาปิดตรงนี้อีกอันหนึ่ง


ลองทบทวนดูนะครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2010-09-19 07:37:38 By : สกล
 


 

No. 4

Guest


Quote:
มัน alert ออกมาว่ายังไงครับ เหมือนกันทั้งสองโปรแกรมหรือเปล่า ถ้าใช่น่าจะเป็นคำสั่ง if ผิดครับ เพราะที่ผมใส่ให้นั้น มันต้องalertในfirefoxเท่านัน

alert เหมือนกันทั้งสองเลยค่ะ

ลองหาวิธีเช็คดู ผลปรากฏว่าใน IE ajax สามารถเป็นได้ทั้ง new XMLHttpRequest(); แล้วก็ new ActiveXObject("Microsoft.XMLHTTP"); ส่วน Firefox ajax จะเท่ากับ new XMLHttpRequest();
ตรงนี้สงสัยว่าทำไม IE ถึงสามารถสร้างออบเจ็คต์ได้ทั้งสองแบบเลยค่ะ

เรื่องปีกกาลองเช็คแล้ว ไม่น่าจะผิดนะค่ะ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2010-09-19 14:59:27 By : starter
 


 

No. 5

Guest


อ่อ รู้แล้วค่ะว่าปัญหาที่ทำให้ไม่สามารถแสดงข้อมูลได้ อยู่ที่ readyState ค่ะ คือที่ IE จะเป็น 1, 2, 3 สถานะสุดท้ายเป็น 4
แต่ที่ Firefox จะเป็น 2,3 ,4 แล้ว 1 ค่ะ ajax.responseText เลยไม่แสดง มีวิธีแก้ยังไงดีค่ะ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2010-09-19 15:10:41 By : starter
 


 

No. 6



โพสกระทู้ ( 21 )
บทความ ( 0 )



สถานะออฟไลน์


เพิ่งทราบเหมือนกันครับว่ามันเรียงไม่เหมือนกัน แต่เห็นเขียนกัน ในเงื่อนไงที่ว่า

if(ajax.readyState==4 && ajax.status==200)

ก็เห็นใช้เหมือนกันไม่ต้องแยก เข้าใจเอาเองว่ามันจะวนแบบไหนก็ตาม ให้มันมาจบตรง 4 ละก้อเป็นอันใช้ได้

อยากขอดู code เต็มๆครับ ที่ว่าใช้ใน IE ได้ ขอครบ ทั้งส่วน html javascript และ php เลย ถ้ามีคำอธิบายด้วย จะช่วยได้มาก เพราะตอนนี้งง ไม่ทราบว่าจะทดสอบได้ยังไง

ยังคาใจเรื่องปีกกา แต่ถ้าคุณตรวจดี แล้ว ก็แล้วไปครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2010-09-19 19:56:03 By : สกล
 


 

No. 7



โพสกระทู้ ( 9 )
บทความ ( 0 )



สถานะออฟไลน์


index.php
<html>
<head>
<script src="inc/ajax.js" language="javascript" type="text/javascript" ></script>
<script type="text/javascript">
function ajaxCall(){
var URL = "check.php";
URL += "?rand="+ Math.random();
var userlog = document.getElementById('userlog').value;
var passlog = document.getElementById('passlog').value;
var data = "userlog="+ userlog +"&passlog="+ passlog;
ajaxLoad('POST',URL,data,'dv');
}
</script>
</head>
<body>

<table width="98%" border="0" cellspacing="0" cellpadding="0">
                <tr>
                  <td height="23">ชื่อผู้ใช้งาน</td>
                  <td><input name="userlog" type="text" id="userlog" size="15" /></td>
                </tr>
                <tr>
                  <td>รหัสผ่าน</td>
                  <td><input name="passlog" type="password" id="passlog" size="15"/></td>
                </tr>
                <tr>
                  <td>&nbsp;</td>
                  <td><button onclick = "ajaxCall();">Login</button></td>
                </tr>
                <tr>
                  <td colspan="2"><div id="dv" class="warn"></div></td>
                </tr>
              </table>
</body>
</html>



มีปุ่มเรียกใช้ฟังก์ชัน ajaxCall() แล้วใน ajaxCall() ก็เรียกฟังก์ชัน ajaxLoad() ในไฟล์ ajax.js
ส่งข้อมูลไปไฟล์ check.php


ประวัติการแก้ไข
2010-09-19 23:16:36
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2010-09-19 23:15:08 By : kid1412
 


 

No. 8



โพสกระทู้ ( 1,439 )
บทความ ( 0 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Facebook

โค้ดไม่ผิดครับถูกแล้วแต่ลืมขั้นตอนหนึ่งไป
check.php ควรแปลงไฟล์ให้เป็น utf8 ด้วยครับ ติดเรื่องส่งค่าภาษาไทยกลับมา ภาษาไทยมันเพี้ยน ทำให้เข้าคำัสั่ง eval มันเลยไม่ทำงานตามไปด้วย
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2010-09-20 00:43:02 By : xbeginner01
 


 

No. 9



โพสกระทู้ ( 9 )
บทความ ( 0 )



สถานะออฟไลน์


ไม่น่าเพี้ยนนะค่ะ

ใน Firefox ลองเช็คโดยใช้ alert แสดงค่า ajax.readyState วางไว้ก่อนตำแหน่งเช็คใน if(ajax.readyState==4 && ajax.status==200)
ผลปรากฏว่า ค่าที่ได้คือ 2 แล้ว 3 แล้ว 4 (หลังจากนี้ก็แสดงผลตามปกติค่ะ) พอมาที่สเต็ท 1 ข้อมูลก็หายไปค่ะ คือสเต็จมันแปลกๆนะค่ะ มีวิธีแก้มั๊ยค่ะ
IE สเต็จปกติดีค่ะ (1 2 3 4)

ขอบคุณที่ช่วยหาให้นะค่ะ


ประวัติการแก้ไข
2010-09-20 02:04:33
2010-09-20 02:08:45
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2010-09-20 02:03:37 By : kid1412
 


 

No. 10



โพสกระทู้ ( 21 )
บทความ ( 0 )



สถานะออฟไลน์


ผมลองทดสอบดู โดย ตัดทอนคำสั่งใน check.php ลงบ้าง เพราะไม่มีฐานข้อมูล เหมือน จขกท. ผลคือมันน่าจะใช้ได้นะครับ

ผมตัด check.php เหลือเพียงนี้ โดยไม่ได้แก้ไข code ส่วนอื่นเลย

check.php
<?php
session_start();
$num = 1;
if($num == 1)
{
$_SESSION['m_user']= "x";
$_SESSION['m_status']= "y";
header("content-type: text/javascript;");
echo "alert('เข้าสู่ระบบเรียบร้อยแล้ว');";
echo "window.location.reload();";
}
else
{
echo "ข้อมูลไม่ถูกต้อง";
}
?>


ผลคือมัน alert ได้ครับ
it works

ผมสรุปว่า code มันใช้ได้ ถ้าจะผิดพลาด ก็ต้องเป็นส่วนที่ผมตัดออก ในส่วน js น่าจะ ok ครรับผม

oops ลืมไป ผมดันไปใช้ chrome ทดสอบครับ ไว้ว่างจะลองใหม่


ประวัติการแก้ไข
2010-09-20 08:24:21
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2010-09-20 08:22:01 By : สกล
 


 

No. 11



โพสกระทู้ ( 21 )
บทความ ( 0 )



สถานะออฟไลน์


ลองทดสอบในไฟร์ฟอกซ์ แล้ว ด้วยการตัด code เรื่องบานข้อมูลออกไปเหลือเพียง

session_start();
$user = $_POST["userlog"];
$pass = base64_encode($_POST["passlog"]);
if(empty($user))
{
exit("กรุณากรอกชื่อผู้ใช้");
}
if(empty($pass))
{
exit("กรุณากรอกรหัสผ่าน");
}
$num = 1;
if($num == 1)
{
$_SESSION['m_user']= $user;
$_SESSION['m_status']= $_pass;
header("content-type: text/javascript;");
echo "alert('เข้าสู่ระบบเรียบร้อยแล้ว ".$_POST["userlog"] ." pass ".$_POST["passlog"]." ');";
echo "window.location.reload();";
}
else
{
echo "ข้อมูลไม่ถูกต้อง";
}

พบว่าใช้ได้ครับ ผมว่าดีเสียด้วย ขอเอาไอเดียไปใช้เลย

ff work well
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2010-09-20 12:53:37 By : สกล
 


 

No. 12



โพสกระทู้ ( 9 )
บทความ ( 0 )



สถานะออฟไลน์


ได้แล้วค่ะ โค้ด ajax หรือ php ไม่ผิดจริงๆค่ะ ปัญหาอยู่ที่ HTML 55+
พอดีในโค้ดติดแท็กฟอร์มอยู่ที่ table นั้นอ่ะค่ะ ของ IE ไม่เป็นปัญหา แต่ Firefox หลังจากกดปุ่มแล้วจะโหลดหน้านั้นใหม่
เลยมองไม่เห็นข้อมูลที่ ajax ส่งกลับมาค่ะ

ถามเรื่องนึงค่ะ IE 7 สามารถสร้างอ็อบเจ็คต์ได้สองแบบเลยหรอค่ะ คือลองเช็คแล้วได้ทั้งสองเลยอ่ะ

ขอบคุณที่สละเวลาช่วยหาให้นะค่ะ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2010-09-20 17:28:39 By : kid1412
 


 

No. 13



โพสกระทู้ ( 21 )
บทความ ( 0 )



สถานะออฟไลน์


All modern browsers (IE7+, Firefox, Chrome, Safari, and Opera) have a built-in XMLHttpRequest object.
xmlhttp=new XMLHttpRequest();


Old versions of Internet Explorer (IE5 and IE6) uses an ActiveX Object:
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");

แต่ไม่รู้ว่า IE7 จะใช้ ActiveX Object: ได้หรือเปล่า
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2010-09-21 17:30:31 By : สกล
 


 

No. 14



โพสกระทู้ ( 98 )
บทความ ( 0 )



สถานะออฟไลน์


ตกลงต้องแก้ตรงไหนอะครับ ผมก็เป็นเหมือนกัน งง เลย ใช้งานไม่ได้
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2011-08-24 15:42:21 By : bluesix
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : ajax ใช้กับ firefox ไม่ได้ แต่ใช้กับ IE ได้ ช่วยเช็คให้หน่อยนะค่ะ
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 01
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่