Ajax请求由外部页面和history.pushState组成

时间:2014-09-19 13:41:57

标签: javascript jquery ajax pushstate

有一种方法可以将这两种技术结合起来,这样当我们在div“结果”中得到它们时,它们会一起工作吗?

让我们看看问题..我们有第一个执行ajax请求的代码

    var http_request = false;
function makeRequest(url,getvar,funzione) {
    http_request = false;
    if (window.XMLHttpRequest) { // Mozilla, Safari,...
        http_request = new XMLHttpRequest();
        if (http_request.overrideMimeType) {
            //http_request.overrideMimeType('text/xml');
            // See note below about this line
        }
    } else if (window.ActiveXObject) { // IE
        try {
            http_request = new ActiveXObject("Msxml2.XMLHTTP");
        } catch (e) {
            try {
                http_request = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (e) {}
        }
    }

    if (!http_request) {
        alert('Errore :( Non riesco a creare unna connessione XMLHTTP');
        return false;
    }
    http_request.onreadystatechange = funzione;
    http_request.open('POST', url, true);
http_request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    http_request.send(getvar);

}

function alertContents() {

    if (http_request.readyState == 4) {
        if (http_request.status == 200) {
            //alert(http_request.responseText);
    document.getElementById("result").innerHTML = http_request.responseText;
        } else {
            alert('C\'è stato un problema alla connessione.');

        }
    }else{
    document.getElementById("result").innerHTML ="loading";
}

}

另一个编辑andress栏的函数..

jQuery(document).ready(function() {
   $('a.clickurl').click(function(event) {
      var currentPage = document.location.pathname.substring(document.location.pathname.lastIndexOf('/') + 1);
      if ($(this).attr('href') != currentPage){ 
         if (history && history.pushState) {  
            history.pushState(null, document.title, $(this).attr('href'));
               $.get($(this).attr('href'), {ajax:'1'}, function(data, text, xhr) {
                  pageSlider(data, text, xhr);
               });

            event.preventDefault(); 
         }
     }
});

在第一个因素之后我们得到div的结果..并且到这里一切正常,但是如何让函数也在“result”div中的链接中工作?

设置一个href =“#”ajaxrequest工作正常,只需重新刷新“result”div ..但如果我设置了不同的地址加载整个页面..

PS。我已经尝试过返回false;

1 个答案:

答案 0 :(得分:0)

问题在于您不是动态内容的binidng事件。您需要重新绑定或使用事件委派。

$(document).on("click", 'a.clickurl', function(event) { 
如果所有链接仅在结果div

中,则

甚至更好

$("#result").on("click", 'a.clickurl', function(event) {