چرا این کد روی مرورگر اینترنت اکسپلورر 6 کار نمی کنه؟

i-php-i

Active Member
این کد که مربوط به ایجاد شی XMLHttpRequest هست، توی مرورگری مثل فایرفارکس کار می کنه ولی توی مرورگر اینترنت اکسپلورر 6 کار نمی کنه چرا این کد روی مرورگر اسنترنت اکسپلورر 6 کار نمی کنه؟

HTML:
function xmlobject()
{
    var xmlHttp;
    try
    {
        xmlHttp = new XMLHttpRequest();
    }
    catch(e)
    {
        var xmlHttpVersions= new Array ("MSXML2.XMLHTTP.6.0",
        "MSXML2.XMLHTTP.5.0", "MSXML2.XMLHTTP.4.0", "MSXML2.XMLHTTP.3.0","MSXML2.XMLHTTP","MICROSOFT.XMLHTTP")
        
        for (var i=0; i<XMLHttpRequest.length && !xmlHttp; i++)
        {
            try
            {
                xmlHttp = new ActiveXObject(xmlHttpVersions[i]);
            }
            catch (e) {}
        }
    }
    if (!xmlHttp) { alert ("امکان انجام درخواست شما وجود ندارد، لطفا مجددا تلاش کنید."); }
    else { return xmlHttp; }
}
var xmlHttp = xmlobject();
 

eAmin

Well-Known Member
تغییراتی که در حلقه ی تابع شما انجام شد رو کاراکتر به کاراکتر مشاهده کنید تا متوجه اشکالات بشید:
کد:
function xmlobject(){
    var xmlHttp;
    try{
        xmlHttp = new XMLHttpRequest();
    } catch(e) {
        var xmlHttpVersions= ["MSXML2.XMLHTTP.6.0","MSXML2.XMLHTTP.5.0", "MSXML2.XMLHTTP.4.0", "MSXML2.XMLHTTP.3.0","MSXML2.XMLHTTP","Microsoft.XMLHTTP"];

        for (var i = 0; i < xmlHttpVersions.length; i++) {
            try {
                xmlHttp = new ActiveXObject(xmlHttpVersions[i]);
            } catch (e) {}
        }
    }

    if (!xmlHttp) { alert ("امکان انجام درخواست شما وجود ندارد، لطفا مجددا تلاش کنید."); }
    else { return xmlHttp; }
}

var xmlHttp = xmlobject();

موفق باشید.
 

i-php-i

Active Member
تغییراتی که در حلقه ی تابع شما انجام شد رو کاراکتر به کاراکتر مشاهده کنید تا متوجه اشکالات بشید:
کد:
function xmlobject(){
    var xmlHttp;
    try{
        xmlHttp = new XMLHttpRequest();
    } catch(e) {
        var xmlHttpVersions= ["MSXML2.XMLHTTP.6.0","MSXML2.XMLHTTP.5.0", "MSXML2.XMLHTTP.4.0", "MSXML2.XMLHTTP.3.0","MSXML2.XMLHTTP","Microsoft.XMLHTTP"];

        for (var i = 0; i < xmlHttpVersions.length; i++) {
            try {
                xmlHttp = new ActiveXObject(xmlHttpVersions[i]);
            } catch (e) {}
        }
    }

    if (!xmlHttp) { alert ("امکان انجام درخواست شما وجود ندارد، لطفا مجددا تلاش کنید."); }
    else { return xmlHttp; }
}

var xmlHttp = xmlobject();
موفق باشید.

شما xmlHttpVersions رو توی حلقه قرار دادید و مشکل حل شد.

مرسی
 

i-php-i

Active Member
تغییراتی که در حلقه ی تابع شما انجام شد رو کاراکتر به کاراکتر مشاهده کنید تا متوجه اشکالات بشید:
کد:
function xmlobject(){
    var xmlHttp;
    try{
        xmlHttp = new XMLHttpRequest();
    } catch(e) {
        var xmlHttpVersions= ["MSXML2.XMLHTTP.6.0","MSXML2.XMLHTTP.5.0", "MSXML2.XMLHTTP.4.0", "MSXML2.XMLHTTP.3.0","MSXML2.XMLHTTP","Microsoft.XMLHTTP"];

        for (var i = 0; i < xmlHttpVersions.length; i++) {
            try {
                xmlHttp = new ActiveXObject(xmlHttpVersions[i]);
            } catch (e) {}
        }
    }

    if (!xmlHttp) { alert ("امکان انجام درخواست شما وجود ندارد، لطفا مجددا تلاش کنید."); }
    else { return xmlHttp; }
}

var xmlHttp = xmlobject();
موفق باشید.

یه سوال دیگه: بعد از تابع مربوط به ایجاد شی XMLHttpRequest از تابع زیر برای ارسال داده ها به سرور استفاده می کنم. این تابع به درستی اجرا می شه، اما می خوام بدونم که شما این کد رو استاندارد می دونید یا به تغییر احتیاج داره؟

HTML:
function process()
{
    var ptitle = document.getElementById('pTitle').value;
        if(xmlHttp.readyState==4 || xmlHttp.readyState==0)
        {
            try
            {
                xmlHttp.open("POST","ajax.php",true);
                xmlHttp.onreadystatechange=handleServer();
                xmlHttp.send('pTitle=' + ptitle);    
            }
            catch (e)
            {
                alert ("امکان اتصال به سرور وجود ندارد\n" + e.toString());
                return false;
            }
        }
        else { alert ("امکان انجام درخواست شما وجود ندارد، لطفا مجددا تلاش کنید."); return false;}
}
 

eAmin

Well-Known Member
کد شما همونطور که حدس زدید استاندارد نیست و ایراداتی داره. شما باید از پراپرتی readyState در رویداد onreadystatechange استفاده کنید، نه بیرون از رویداد!
به این مثال و نحوه استفاده از اون رو مشاهده کنید:
کد:
function process(callback) {
    if (!xmlHttp) {
        console.log('error');
        return;
    }

    var ptitle = document.getElementById('pTitle').value;

    xmlHttp.open("POST","ajax.php",true);
    xmlHttp.onreadystatechange = function() {
        if (xmlHttp.readyState == 4) {
            if (xmlHttp.status == 200) callback(xmlHttp);
        } else {
            console.log('error');
        }
    };
    xmlHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    xmlHttp.send('pTitle=' + ptitle);    
}

process(function(req) {
    alert(req.responseText);
});
 

i-php-i

Active Member
مشکل به طور کامل حل شد. با سرور تماس می گیرم، پاسخ سرور رومی خونم و نمایش می دم.
 
آخرین ویرایش:

جدیدترین ارسال ها

بالا