Ajax: ошибка Internet Explorer - PullRequest
       0

Ajax: ошибка Internet Explorer

0 голосов
/ 09 апреля 2010

Я работаю над формой входа. Код Ajax выглядит следующим образом:

/* ---------------------------- */
/* XMLHTTPRequest Enable */
/* ---------------------------- */

    function createObject() 
    {
    var request_type;
    var browser = navigator.appName;
    if(browser == "Microsoft Internet Explorer"){
    request_type = new ActiveXObject("Microsoft.XMLHTTP");
    }else{
    request_type = new XMLHttpRequest();
    }
    return request_type;
    }

    var http = createObject();

    /* -------------------------- */
    /* LOGIN */
    /* -------------------------- */
    /* Required: var nocache is a random number to add to request. This value solve an     Internet Explorer cache issue */
    var nocache = 0;
    function login() {
    // Optional: Show a waiting message in the layer with ID ajax_response
    document.getElementById('login_response').innerHTML = "<img src='images/ispinner.gif'/>"
    // Required: verify that all fileds is not empty. Use encodeURI() to solve some issues    about character encoding.
    var email = encodeURI(document.getElementById('emailLogin').value);
    var psw = encodeURI(document.getElementById('pswLogin').value);
    // Set te random number to add to URL request
    nocache = Math.random();
    // Pass the login variables like URL variable
    http.open('get', 'login.php?email='+email+'&psw='+psw+'&nocache = '+nocache);
    http.onreadystatechange = loginReply;
    if(window.XMLHttpRequest)
    {
    http.send(null);
    }
    else
    {
    http.send()
    }
    }
    function loginReply() {
    if(http.readyState == 4){ 
    var response = http.responseText;
    document.getElementById('login_response').innerHTML = response;
    }
    }

Код работает абсолютно нормально на Google Chrome и Mozilla Firefox. Это просто не работает на IE 5 и IE 6. Я не могу понять, почему?

Обновление: В коде реализовано несколько окон предупреждений. обнаружил, что выполнение в Internet Explorer не выходит за пределы

document.getElementById('login_response').innerHTML = "<img src='images/ispinner.gif'/>"

Есть ли какой-то другой синтаксис для получения значений формы?

1 Ответ

1 голос
/ 09 апреля 2010

У вас есть лишние пробелы вокруг знака "=" вашего атрибута строки запроса nocache. Не уверен, как IE справляется с этим. Вероятно, заменяет их на «% 20», что, скорее всего, не является источником вашей ошибки, но, тем не менее, оно искажено.

Не могли бы вы проверить / отладить свой JavaScript с помощью панели инструментов IE Developer, чтобы убедиться, что все ваши объекты создаются правильно?

Также смотрите мой комментарий о кешировании запросов. Возможно, у вас был кешированный запрос, который возвратил пустой ответ, поэтому кажется, что он не работает.

Попробуйте добавить функцию alert () в функцию обратного вызова, чтобы узнать, получится ли она когда-либо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...