PDA

View Full Version : مشكل Ajax با مرورگر IE



merlin_vista
جمعه 18 بهمن 1387, 21:25 عصر
سلام :
كد Ajax زير را در نظر بگيريد :

function GetXmlHttpObjectrate()
{
var xmlHttp=null;
try
{
// Firefox, Opera 8.0+, Safari
xmlHttp=new XMLHttpRequest();
}
catch (e)
{
// Internet Explorer
try
{
xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e)
{
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
}
}
return xmlHttp;
}



function GetInfo(id,ResultID,wait)
{
xmlhttp=GetXmlHttpObjectrate();
document.getElementById(wait).style.display = "";

xmlhttp.open("GET","Handler.ashx?id="+id, true );
xmlhttp.onreadystatechange= function ()
{
if (xmlhttp.readyState==4)
{
document.getElementById(ResultID).innerHTML== xmlhttp.responseText;

document.getElementById(wait).style.display= "none";
}
}

xmlhttp.send(null);

}كد بالا در مرورگر Firefox به درستي كار ميده .
ولي در مرورگر IE يه مشكل عجيب دارد .
فرض كنيد يك متن در يك تكس باكس در صفحه نوشته و آن را به آرگومان Id پاس ميدهيم و همه چيز درست كار ميده . حالا اگر دوباره دكمه را بزنيم اصلاً نميره طرف سرور و درخواست را بهHandler.ashx ارسال كند و نتايج را بگيره :ناراحت:(توجه كنيد كه مشكل فوق در صورتي ميباشد كه متن داخل TextBox تغيير نكند و در مرورگر Ie باشيم اين اتفاق رخ ميدهد ، لازم به ذكر است كه اگر متن را داخل تكس تغيير دهيم دوباره همه چيز درست كار ميده . در مروگر Firefox مشكل فوق وجود ندارد :لبخندساده:) .
با تشكر از همه دوستان :قلب:

__ziXet__
جمعه 18 بهمن 1387, 23:54 عصر
سلام :
كد Ajax زير را در نظر بگيريد :

function GetXmlHttpObjectrate()
{
var xmlHttp=null;
try
{
// Firefox, Opera 8.0+, Safari
xmlHttp=new XMLHttpRequest();
}
catch (e)
{
// Internet Explorer
try
{
xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e)
{
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
}
}
return xmlHttp;
}



function GetInfo(id,ResultID,wait)
{
xmlhttp=GetXmlHttpObjectrate();
document.getElementById(wait).style.display = "";

xmlhttp.open("GET","Handler.ashx?id="+id, true );
xmlhttp.onreadystatechange= function ()
{
if (xmlhttp.readyState==4)
{
document.getElementById(ResultID).innerHTML== xmlhttp.responseText;

document.getElementById(wait).style.display= "none";
}
}

xmlhttp.send(null);

}كد بالا در مرورگر Firefox به درستي كار ميده .
ولي در مرورگر IE يه مشكل عجيب دارد .
فرض كنيد يك متن در يك تكس باكس در صفحه نوشته و آن را به آرگومان Id پاس ميدهيم و همه چيز درست كار ميده . حالا اگر دوباره دكمه را بزنيم اصلاً نميره طرف سرور و درخواست را بهHandler.ashx ارسال كند و نتايج را بگيره :ناراحت:(توجه كنيد كه مشكل فوق در صورتي ميباشد كه متن داخل TextBox تغيير نكند و در مرورگر Ie باشيم اين اتفاق رخ ميدهد ، لازم به ذكر است كه اگر متن را داخل تكس تغيير دهيم دوباره همه چيز درست كار ميده . در مروگر Firefox مشكل فوق وجود ندارد :لبخندساده:) .
با تشكر از همه دوستان :قلب:
شما با alert کدتو دیباگ کن ببین کجاش مشکل داره و خوب عمل نمیکنه!

ebrahhimi
شنبه 19 بهمن 1387, 09:43 صبح
سلام
ميتوني 2 كار رو چك كني.
1-اينكه چون ajax از javascript است .داخل IE>security>javascript& activx رو چك كن . enable كن .
2. داخل كدت ميتوني شرطي بذاري كه اگر فلان مقدار بود و يا تغيير كرد ...
ex: if input==* && input== change* {} php


به احتمال زياد اولي باشه چون خودم اين رو چك كردم.

raravaice
شنبه 19 بهمن 1387, 21:02 عصر
مشکل از cache در IE هست، کلا ajax تو این مورد با IE مشکل داره بهتره که از سمت سرور cache رو Expire کنی تا با این مشکل مواجه نشی.

موفق باشید

Chabok
شنبه 19 بهمن 1387, 23:41 عصر
در ادامه صحبت دوستان : میتونید برای مبارزه با Cache ، ساعت جاری سیستم کلاینت را نیز گرفته و به عنوان یکی از پارامترها به Url بچسبانید .
از چند نفر که قبلاً چنین مشکلی داشته اند شنیده ام که با این روش مشکل حل شده .

موفق باشید .

احمد سامعی
سه شنبه 23 تیر 1388, 11:38 صبح
مشکل از cache در IE هست، کلا ajax تو این مورد با IE مشکل داره بهتره که از سمت سرور cache رو Expire کنی تا با این مشکل مواجه نشی.

موفق باشید

استاد چطور بايد اين كار كرد ؟:تشویق:

raravaice
سه شنبه 23 تیر 1388, 13:33 عصر
Response.Cache.SetExpires(Now.AddDays(-1))


موفق باشید