2017-04-10 2 views
0

別のURLにAJAX GETリクエストを行った後、元のURLにGETクエリーが追加されます。以下のコード、データ=とAJAX要求 '' 成功した以下のURL別のURLへのAJAX GETリクエストは、GETクエリーで元のURLを追加します。

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データが追加されています(確認済み)。取得要求が元のURLに追加されないようにするにはどうすればよいですか?ここで

は、Djangoのサーバーからのログデータである:私はAJAXの応答の後、私のURLになりたい

"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 

/ユーザー名/

+0

あなたはAJAX呼び出しを作っているところから、元のURLとは何ですか? –

+0

使用: 'url:" http //:sitename/ajax/search " –

+0

@SijanBhandariサーバログの最初の行(URL)は、AJAX呼び出しを行う場所です。 2行目は、私が呼び出すURLです。 3番目のURLは最初のURLと同じであると想定されていますが、何らかの理由で呼び出しのクエリパラメータがここに追加されています。 –

答えて

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); 
     } 
}); 

});

+0

質問とは何も関係していないようです。*「元のURLにgetリクエストを追加するのを防ぐにはどうすればいいですか」* –

+0

event.preventDefault()メソッドは、要素のデフォルトアクションを停止します。あなたの場合、デフォルトアクションは検索のために提出することです。あなたはそれをオーバーライドしてajax呼び出しを行いたいからです。 –

+0

はい、問題は2度提出された問題ではなく、URLに間違ったURLがあるという問題です。 –

0

あなたはから任意のクエリパラメータを削除するには、このjQueryのスクリプトを使用することができますURL

$(document).ready(function(){ 
    if (window.location.href.indexOf('?') > -1) { 
     history.pushState('', document.title, window.location.pathname); 
    } 
}); 
0

使用window.history.pushStatehttps://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 
       } 
      } 
}); 
+0

これは私の答えとどう違うのですか? –

+0

しかし、なぜGETパラメータが最初に追加されたのですか?通常、元のURLに戻る必要があります。 –

+0

@NikosVitaTopiko document.readyでこれを使用していますが、その理由を知りません。アクションの後に 'pushState'を呼び出す方が私にとって意味があります。 – rrmerugu