0

我使用下面的ajax代码

// JavaScript Document
function createTeam() {
    var name=document.getElementById("name").value;
    if(name==null || name==""){
        var div3 = document.getElementById("errorMessage");
        var text = "Enter Team";
        div3.style.display = "block";
        div3.style.color = "red";
        div3.style.fontSize = "65%";
        div3.innerHTML = text;
    }else{
        xmlhttp=new XMLHttpRequest();
        xmlhttp.open("POST","/TeamServlet?name="+name+"&task=create",true);
        xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
        xmlhttp.send();
        xmlhttp.onreadystatechange= readResponse;
    }
    function readResponse(){
        if (xmlhttp.readyState == 4)
        {
            response = xmlhttp.responseText;
            $('#button').hide("slow");
            if(response == "false"){
                var div2 = document.getElementById("errorMessage");
                var text = "Unable to create team.";
                div2.style.display = "block";
                div2.style.color = "red";
                div2.style.fontSize = "65%";
                div2.innerHTML = text;
            }
            if(response == "true"){
                var div = document.getElementById("errorMessage");
                var text1 = "Team created.";
                div.style.display = "block";
                div.style.color = "red";
                div.style.fontSize = "65%";
                div.innerHTML = text1;
            }
        }
    }
}

但是当我使用这个 ajax 时会发生什么,URL 不会出现在浏览器的地址栏上。我该如何实现呢?唯一出现的 url 是在我提交登录表单后,即 http://localhost:8080/LoginServlet?task=login 但在此之后,即使我导航到其他 jsps/servlet,这些 url 也没有出现。如何修复此 ajax 代码?

4

2 回答 2

0

为什么要在地址栏中显示 ajax 请求的 url?如果您想在不离开当前页面的情况下调用服务器,则将执行 Ajax 请求。如果您想更改地址栏中的网址,则必须将用户重定向到所述网址,您不需要 Ajax。

于 2012-04-27T09:06:59.060 回答
0

这就是 AJAX 的基本目的:在“后台”做异步请求。使用 AJAX 完成的所有请求都不会触发浏览器的加载图标,也不会更改当前 URL。

如果你想做这样的事情,你应该看看HTML5 History API. 因为这是一个巨大的主题,我不能告诉你“一个”的答案,但我给你一些资源来进入:

您会发现的问题是,并非所有浏览器都支持此 API,因此您需要使用polyfill使您的代码跨浏览器兼容。以下是您可以使用的跨浏览器 polyfill 列表:

此列表由 Modernizr 团队维护,最新版本可在https://github.com/Modernizr/Modernizr/wiki/HTML5-Cross-Browser-Polyfills获得

于 2012-04-27T09:20:47.397 回答