Параметр функции AJAX равен нулю? - PullRequest
0 голосов
/ 05 октября 2011

У меня проблема с JS:

В строке с 1 по 4 я беру все "a" -элементы из DOM и получаю их hrefs.позже я хочу перезагрузить URL через AJAX, но href не приходит правильно ... Что не так?

$(document).ready(function(){
    $('a').click(function(e){
       ajaxReload($(this).attr('href'));
       e.preventDefault();
    });
});

function ajaxReload(href) {

var xmlhttp = null;

    if (window.XMLHttpRequest) {
        xmlhttp = new XMLHttpRequest();
    }
    // IE
    else if (window.ActiveXObject) {
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    }

    xmlhttp.open("GET", href, true);
    xmlhttp.onreadystatechange = function() {

        if(xmlhttp.readyState != 4) {
            document.write('loading');
        }
        if(xmlhttp.readyState == 4 && xmlhttp.status == 200) {
            alert('hello');
            //alert('getting '+xmlhttp.status+' for '+href);


            var pureHTML = xmlhttp.responseText;
            var ajaxstart = pureHTML.indexOf('<!-- AJAX START -->');
            var ajaxend = pureHTML.indexOf('<!-- AJAX END -->');
            var ajaxContent = pureHTML.substring(ajaxstart, ajaxend);

            var writeContent = document.getElementById('content');
            writeContent.innerHTML = ajaxContent;

        }
    }
    xmlhttp.send(null);
}

1 Ответ

0 голосов
/ 05 октября 2011

Извините, если я неправильно понял ваш код.Я думаю , что вам просто нужно (хотя бы приблизительно) просто удалить код, как прокомментировано ниже:

//$('a').click = function(href) {

    var pureHTML = xmlhttp.responseText;
    var ajaxstart = pureHTML.indexOf('<!-- AJAX START -->');
    var ajaxend = pureHTML.indexOf('<!-- AJAX END -->');
    var ajaxContent = pureHTML.substring(ajaxstart, ajaxend);

    $("content").html(ajaxContent);

//  ajaxReload(href); //this would cause a loop?

//  return false;
//}

Чтобы ответить на ваш следующий вопрос - вы можете изменить обработку распространения событий на:

$(document).ready(function(){
    $('a').click(function(e){
       ajaxReload($(this).attr('href'));
       e.preventDefault();
    });
});

А для дальнейших комментариев, возможно, попробуйте изменить:

document.write('loading');

На:

$("content").html(xmlhttp.status); //so now you can see the loading status for testing
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...