PDA

View Full Version : سوال: این کد ajax چرا در IE کار می کنه ولی در فایرفاکس کار نمی کنه



kavoshgar63
پنج شنبه 29 اسفند 1387, 16:55 عصر
آقا من سرچ کردم تو سایتهای دیگه ولی جوابهایی که داده بودن هیچ کدوم درست نبود.
چرا این کد توی IE کار می کنه ولی توی FireFox کار نمی کنه؟

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
<script language="javascript" type="text/javascript">

var pageurl = "getName.php?param=";
var http = getHttp();

function Answer()
{
if(http.readystate==4)
{
r = http.responseText;
document.getElementById("tfname").value = r;
}
}


function SendCodeAndReciveName()
{

var code = document.getElementById("tfcode").value;
http.open("GET", pageurl+code, true);
http.onreadystatechange = Answer;
http.send(null);
}

function getHttp()
{
var xmlhttp;
try
{
xmlhttp = new ActiveXObject("msxml2.XMLHTTP");
}
catch(e)
{
try
{
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
catch(e)
{
if(typeof XMLHttpRequest != "undefined")
{
xmlhttp = new XMLHttpRequest();
}
}

}
return xmlhttp;
}


</script>
</head>

<body>
<p>code :
<input name="tfcode" type="text" id="tfcode" />
<input type="button" name="Submit" value="get name" onClick="SendCodeAndReciveName()" />
<br />
<br />
city name:<input name="tfname" type="text" id="tfname" />
</p>

</body>
</html>

کد صفحه دیگر

<?php
$c = $_GET["param"];

if($c == "0311")
{
echo "Esfahan";
}
else
echo "UnKnown"
?>

من احتمال میدم که مشکل از این قسمت باشه :

catch(e)
{
if(typeof XMLHttpRequest != "undefined")
{
xmlhttp = new XMLHttpRequest();
}
ولی نمی دونم چطور باید حل بشه.

hosseinit
سه شنبه 04 فروردین 1388, 01:59 صبح
سلام دوست عزیز

این یک تکنیک ساده آجاکس هست که اومدی یک سری از استاندارد ها رو تعریف کردی

اون بخشی کف گفتی فکر میکنم مشکل از اونجاست اون برای مرورگر های استاندارد هست مثل OPERA چون اومده گفته اگر ویندوز نبودی پس تو توی لینوکس هستی یعنی اینکه شما در مرورگر های استاندارد هستی

یک بخش دیگه اومده استاندارد جهانی رو تعریف کردی و در بخش اول هم فکر میکنم استاندارد IE هست.


خوب حالا شما فقط یک مشکل سینتکسی داری عزیز در بخشی که نوشتی

if(typeof XMLHttpRequest != "undefined")

خوب شما باید اون کلمه undefiend بنویسی نه اونی که شما نوشتی برای همون هست استاندارد جهانی رو نمیتونه بشناسه

بجای اینکه نوشتی undefined باید بنویسی undefiend

guy18iran
چهارشنبه 05 فروردین 1388, 18:11 عصر
سلام دوست عزیز

این یک تکنیک ساده آجاکس هست که اومدی یک سری از استاندارد ها رو تعریف کردی

اون بخشی کف گفتی فکر میکنم مشکل از اونجاست اون برای مرورگر های استاندارد هست مثل OPERA چون اومده گفته اگر ویندوز نبودی پس تو توی لینوکس هستی یعنی اینکه شما در مرورگر های استاندارد هستی

یک بخش دیگه اومده استاندارد جهانی رو تعریف کردی و در بخش اول هم فکر میکنم استاندارد IE هست.


خوب حالا شما فقط یک مشکل سینتکسی داری عزیز در بخشی که نوشتی

if(typeof XMLHttpRequest != "undefined")

خوب شما باید اون کلمه undefiend بنویسی نه اونی که شما نوشتی برای همون هست استاندارد جهانی رو نمیتونه بشناسه

بجای اینکه نوشتی undefined باید بنویسی undefiend


دوست عزیز این undefiend که میگی اصلا هیچ معنی ای نمیده. undefined یعنی تعریف نشده و اون دوستمون درست نوشتن ولی مشکل اینه که کدشون فقط برای IE :گیج: خوبه.
شما بهتره تابع getHttp رو اینطوری تعریف کنی.
این کد کپی شده از آدرس http://www.w3schools.com/ajax/ajax_browsers.asp هست. :لبخند:



function getHttp()
{
var xmlHttp;
try
{
// Firefox, Opera 8.0+, Safari
// FF Is Love :D
xmlHttp=new XMLHttpRequest();
}
catch (e)
{
// Internet Explorer :-&
try
{
xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e)
{
try
{
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e)
{
alert("Go Go Go");
return false;
}
}
}
}

kavoshgar63
یک شنبه 09 فروردین 1388, 14:34 عصر
سلام
دوست عزیز این کد جواب نداد.

kavoshgar63
چهارشنبه 12 فروردین 1388, 23:55 عصر
این مشکل رو چطور حل کنم؟
من توی فایر فاکس جواب نگرفتم
توی اینترنت اکسپلورر اجرا میشه ولی فایر فاکس اجرا نمیشه.

vahidhossaini
پنج شنبه 13 فروردین 1388, 01:18 صبح
با سلام
کد زیر رو امتحان کن ببین جواب میده

var objXML;
function makeobjXML()
{
if (window.XMLHttpRequest)
{ // if Mozilla
objXML=new XMLHttpRequest();
if (objXML.overrideMimeType)
objXML.overrideMimeType('text/html');
}
else if (window.ActiveXObject)
{ // if IE
try {
objXML=new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e)
{
try{
objXML=new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e){
objXML = null;
}
}
}

} //makeobjXML

kavoshgar63
شنبه 15 فروردین 1388, 01:25 صبح
بازم بی فایده بود

kavoshgar63
یک شنبه 16 فروردین 1388, 15:41 عصر
بعد از کلی تحقیق و بررسی و شب بیداری مشکل رو فهمیدم.
از بس با این کدها سر و کله زدم همه رو دیگه حفظ کردم گفتم اینو بزارمش توی فروم تا بقیه مثل من یه هفته در گیر تین تکه کد نباشن.
اگر سئوالی در این مورد داشتین من در خدمتتون هستم.

<script language="javascript" type="text/javascript">
//Define Your browser
var XMLHttpRequestObject = false;
try {
XMLHttpRequestObject = new ActiveXObject("MSXML2.XMLHTTP");
} catch (exception1) {
try {
XMLHttpRequestObject = new ActiveXObject("Microsoft.XMLHTTP");
} catch (exception2) {
XMLHttpRequestObject = false;
}
}
// agar browser ro nashnakht
if (!XMLHttpRequestObject && window.XMLHttpRequest)
{
XMLHttpRequestObject = new XMLHttpRequest();
}
// End Of Define Your Browser


var pageurl = "getteacher.php?param=";
var http= XMLHttpRequestObject;


function Answer()
{
if(http.readyState == 4)
{
var obj = document.getElementById('bb');
r = http.responseText;
obj.innerHTML=r;
document.getElementById("tfname").value = r;
}
}


function Answer1()
{
if(XMLHttpRequestObject.readyState == 4 && XMLHttpRequestObject.status == 200)

{
var obj = document.getElementById('bb');
r = http.responseText;
obj.innerHTML=r;
document.getElementById("tfname").value = r;
}
}



// in code ro rooye rooydad onclick button mizarid.
function getandgive()
{
if(http)
{
var code = document.getElementById("tfcode").value;
http.open("GET", pageurl+code, true);
http.onreadystatechange = Answer1;
http.send(null);
}
}
//end getandgive

</script>

payam-source
جمعه 03 آذر 1391, 12:38 عصر
سلام
من هم این مشکل رو دارم
حتی این کدی رو هم که شما گذاشتین هم کار نکرد

mrgraphy
جمعه 03 آذر 1391, 13:56 عصر
سلام دوست عزیز.
من خیلی وقته که با ajax در jquery کار میکنم اما با javascript هم خیلی وقت پیش یه دفترچه تلفن نوشتم که با ajax بود و کار هم میکنه و تست شده هست.
اینم کدش.


var object = false;
if(window.XMLHttpRequest)
{
object = new XMLHttpRequest();
}else
{
object = new ActiveXObject("Microsoft.XMLHTTP");
}

function sndrd(data) {

object.open('POST', 'pcad.php?edit=true');
object.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
object.onreadystatechange = function() {
if (object.readyState == 4 && object.status == 200) {
document.getElementById('attbox').innerHTML = object.responseText;}}
object.send(data);
}


امیدوارم کمکتون کرده باشم.
موفق باشید.

mfaridi
جمعه 15 آبان 1394, 11:22 صبح
function Answer()
{
if(http.readystate==4)
{
r = http.responseText;
document.getElementById("tfname").value = r;
}
}

جایگزین با

function Answer() {
if(http.readState==4)
{
r = http.responseText;
document.getElementById("tfname").value = r;
}
}