views:

93

answers:

0

Hi,

I have a loop in which I'm making Ajax xmlhttp requests. This occurs within a function triggered by a window.onload event.

The Ajax calls are being made with async=false, because they need to occur in a specific order that relies on each step completing before the next can occur.

With each successive request in the loop, I'm updating a div with the xmlhttp.responseText.

Firefox is refreshing between calls as desired.

IE is not. When the loop begins, the div is populated with the pre-loop content. When the loop finishes, the div is populated with the first refresh that occurs outside of the loop.

Can someone please help?

Two attempted solutions: 1. Adding a random string to the end of the GET query string to ensure a unique url 2. Submitting with the POST method

No luck with either.

Thanks.

Code...

<script type="text/javascript">
function order_process() {
    var err;
    var queue_id = "<?= implode(':',$plans[$_REQUEST['order_queue_id']]); ?>".split(':');               // Queue ID
    var queue_ax = "<?= implode(':',array_keys($plans[$_REQUEST['order_queue_id']])); ?>".split(':');   // Queue Action
    i = 0;
    for (step in queue_id) {

        // The DIV contents that display during each loop iteration
        document.getElementById("barber_pole").innerHTML='\
            <center>\
            <table style="align:left" border="0" cellpacing="1" cellpadding="1">\
                <tr><td><B>Processing Order</B><span style="float:right;">Step ' + (i + 1) + '/' + queue_id.length + '</span></td></tr>\
                <tr><td style="background-color:#FFFFFF;height:1.5px"></td></tr>\
                <tr><td height="20" style="text-align:center">' + queue_ax[i] + '...</td></tr>\
                <tr><td height="20"><IMG SRC="../../_include/images/barber_pole.gif" style="vertical-align: middle;"></td></tr>\
            </table>\
            </center>';

        xmlhttp = ajax_request(); // Create request object
        xmlhttp.onreadystatechange=function () {
            if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
                1;
            }
        }

        var url = '../../../api/order_process.php?api_login=' + "<?=$api_login?>" + '&api_pass=' + "<?=$api_pass?>" + "&order_id=<?= $_REQUEST['order_id']?>" + '&order_action_id=' + queue_id[step] + '&timeid=' + Math.random();
        xmlhttp.open("GET",url,false);
        xmlhttp.send();

        // If the response includes the string 'failed' exit the loop and render error error message
        if (xmlhttp.responseText.split(',')[0] == 'failed') {
            err = queue_ax[i] == 'Registering Domain'
                ? "<h1 class=\"landing-title\">"  + fname + ', ' + "<?=$feedback[domain_register][title]?>"      + "</h1><DIV class='landing-body'><?=$feedback[domain_register][body]?></DIV>"
                : queue_ax[i] == 'Provisioning cPanel Account'
                ? "<h1 class=\"landing-title\">"  + fname + ', ' + "<?=$feedback[cpanel_provision][title]?>"     + "</h1><DIV class='landing-body'><?=$feedback[cpanel_provision][body]?></DIV>"
                : queue_ax[i] == 'Credit Card Fraud Protection'
                ? "<h1 class=\"landing-title\">"  + fname + ', ' + "<?=$feedback[maxmind_minfraud][title]?>"     + "</h1><DIV class='landing-body'><?=$feedback[maxmind_minfraud][body]?>\"" + xmlhttp.responseText + '"</DIV>'
                : queue_ax[i] == 'Verifying Payment'
                ? "<h1 class=\"landing-title\">"  + fname + ', ' + "<?=$feedback[verify_payment][title]?>"       + "</h1><DIV class='landing-body'><?=$feedback[verify_payment][body]?>\""   + xmlhttp.responseText + '"</DIV>'
                : xmlhttp.responseText == 'failed,'
                ? "<h1 class=\"landing-title\">"  + fname + ', ' + "<?=$feedback[gen_err][title]?>"              + "</h1><DIV class='landing-body'><?=$feedback[gen_err][body]?></DIV>"
                : "<h1 class=\"landing-title\">"  + fname + ', ' + "<?=$feedback[gen_err][title]?>"              + "</h1><DIV class='landing-body'><?=$feedback[gen_err][body]?>\""          + xmlhttp.responseText + '"</DIV>';
            break;
        }
        i++;
    }

    if (err) {
        document.getElementById("landing-pres").innerHTML = err;
        Cufon.replace('.landing-title');
    } else {
        document.getElementById("barber_pole").innerHTML = "<?= $thank[$_REQUEST['order_queue_id']][1] ?>";
    }
}
window.onload=order_process;
</script>