对不同网址的AJAX GET请求会使用GET查询

时间:2017-04-10 08:09:56

标签: javascript jquery ajax django

在向其他网址发出AJAX GET请求后,进行调用的原始网址也附加了GET查询。

使用以下代码,带有data =' a'的AJAX请求已成功进入网址

localhost:8000/ajax/search?query=a

以下是我的AJAX请求代码:

$.ajax({
            type: "GET",
            url: "/ajax/search",
            data: {query: data},
            dataType: "json",                
            success: function (a) {                        
                    console.log(a);
            }
});

但是,在成功收到JsonResponse(我已经确认)之后,发出AJAX请求的原始页面的URL附加了GET数据。如何防止将get请求附加到原始URL?

以下是来自Django服务器的日志数据:

"GET /username/ HTTP/1.1" 200 2947
"GET /ajax/search?query=a HTTP/1.1" 200 96
"GET /username/?query=a HTTP/1.1" 200 2947

我希望在AJAX响应后我的URL为/ username /

3 个答案:

答案 0 :(得分:1)

我希望点击页面中的某个按钮时有一些功能。在这种情况下,       event.preventDefault();

 $("#form").submit(function(event) {

   event.preventDefault(); <------
    $.ajax({
        type: "GET",
        url: "/ajax/search",
        data: {query: data},
        dataType: "json",                
        success: function (a) {                        
                console.log(a);
        }
});

});

答案 1 :(得分:0)

您可以使用此Jquery脚本从URL

中删除任何查询参数
$(document).ready(function(){
    if (window.location.href.indexOf('?') > -1) {
        history.pushState('', document.title, window.location.pathname);
    }
});

答案 2 :(得分:0)

使用window.history.pushState https://developer.mozilla.org/en-US/docs/Web/API/History_API#Example_of_pushState()_method

$.ajax({
            type: "GET",
            url: "/ajax/search",
            data: {query: data},
            dataType: "json",                
            success: function (a) {                        
              console.log(a);
              if (window.location.href.indexOf('?') > -1) { # removes the params in URL if exists
                 window.history.pushState({}, document.title, window.location.pathname); # this is the magic
                 }
            }
});