Firefox загружает два элемента с помощью AJAX / JS - PullRequest
0 голосов
/ 08 августа 2011

Проблема в любой версии firefox, когда я щелкаю ссылку (которая использует popUp ();), она загружает ДВА элемента ajax там, где она должна загрузить один. Я слышал, что это как-то связано с функцией () {}, но я не уверен, и примерно через 3 часа повторного поиска я ничего не нашел.

            function popup(type,content,title,button,colID){
            if(type == 'text'){
                var newdiv = document.createElement('div');
                newdiv.setAttribute('id','Popup');
                newdiv.innerHTML = '<popupStrong>'+title+'</popupStrong><br /><div id="closePopup" onclick="this.parentNode.style.display=\'none\';">'+button+'</div>'+content;
                document.body.appendChild(newdiv);
            } else {
                xmlhttp=GetXmlHttpObject();
                if (xmlhttp==null){
                    window.location='internetexplorer.php';
                }
                xmlhttp.onreadystatechange=function() {eval(contentPopup(title,button,colID));};
                xmlhttp.open("GET",content,true);
                xmlhttp.send(null);
            }
}
function contentPopup(title,button,colID){
    if(xmlhttp.responseText && xmlhttp.responseText != 'undefined'){
        var newdiv = document.createElement('div');
        newdiv.setAttribute('id','Popup');
    if(xmlhttp.responseText != 'error.php'){
         newdiv.innerHTML = '<popupStrong>'+title+'</popupStrong><br /><div id="closePopup" onclick="this.parentNode.style.display=\'none\';">'+button+'</div>'+xmlhttp.responseText;
    } else {
        newdiv.innerHTML = '<popupStrong>404</popupStrong><br /><div id="closePopup" onclick="this.parentNode.style.display=\'none\';">Close</div>The element you were trying to load doesn\'t exist.';
    }
        document.body.appendChild(newdiv);
    }
}

Ответы [ 2 ]

1 голос
/ 08 августа 2011

Измените код следующим образом.

function popup(type,content,title,button,colID){
        if(type == 'text'){
            var newdiv = document.createElement('div');
            newdiv.setAttribute('id','Popup');
            newdiv.innerHTML = '<popupStrong>'+title+'</popupStrong><br /><div id="closePopup" onclick="this.parentNode.style.display=\'none\';">'+button+'</div>'+content;
            document.body.appendChild(newdiv);
        } else {
            xmlhttp=GetXmlHttpObject();
            if (xmlhttp==null){
                window.location='internetexplorer.php';
            }

            xmlhttp.onreadystatechange=function() {
    if (xmlhttp.readyState == 4) {
                eval(contentPopup(title,button,colID));
          }};
            xmlhttp.open("GET",content,true);
            xmlhttp.send(null);  }}

В запросе Ajax состояние готовности == 4 указывает на завершение ответа. Пожалуйста, обратитесь по ссылке ниже для вашей справки http://www.w3schools.com/ajax/ajax_xmlhttprequest_onreadystatechange.asp

С уважением,

Kirubha

0 голосов
/ 08 августа 2011

Я описал здесь (перевод с румынского на английский), почему это происходит в jQuery: в основном вам нужно будет добавить косую черту к вашему URL. Поэтому вместо:

http://your.awesome.url?do=awesome.thing

вы должны иметь:

http://your.awesome.url/?do=awesome.thing
...