簡體   English   中英

為什么我的瀏覽器在post ajax調用中發送兩個請求?

[英]Why does my browser send two requests in a post ajax call?

我在網頁中放置了帶有以下標簽的鏈接:

<a href="" onclick="FiltrarxUnidadPolitica(1)">
   <label class="filter-item-title">
      Distrito Capital
   </label>
   <label class="filter-item-quantity">
      (3)
   </label>
</a>

單擊鏈接時調用的js函數如下:

function FiltrarxUnidadPolitica(iIdUnidadPolitica, bLimpiarPropiedad) {
   $.ajax({
      data: { iIdUnidadPolitica, bLimpiarPropiedad },
      url: "/Home/ListadoInmuebles",
      type: 'POST',
   });
}

我遇到的問題是,單擊鏈接並執行js函數時,瀏覽器向服務器發出兩個請求,如您在插入的圖片中看到的(待處理的調用),第一個請求是js函數中包含的POST調用,第二個是我不知道如何啟動的GET調用。

瀏覽器網絡調用

有人知道GET呼叫的來向嗎?

誰能給我一個關於我要去哪里找的線索?

瀏覽器正在跟蹤您的鏈接,因為您沒有告訴它不要跟蹤它。 href=""與“當前頁面”相同。)

有幾種方法可以防止這種情況:

  • 不要將鏈接用於不是鏈接的東西,請使用input type="button"button並對button進行樣式設置以使其看起來像您的外觀(這也將對輔助軟件有所幫助)。
    (如果使用button ,請確保它不是form或者具有type="button"type="button"的默認類型奇怪的是"submit" 。)

  • 使用jQuery而不是onclick屬性連接函數,並在事件對象上調用preventDefault

  • href設置為javascript:;

     <a href="javascript:;" onclick="FiltrarxUnidadPolitica(1);"> 

    (或轉到href="javascript:void(0)" 。)

  • href設置為#anchor-that-does-not-exist

    (除非使用該鏈接,否則不要使用href="#"除非您希望頁面滾動到頂部。)

  • onclick添加return false

     <a href="" onclick="FiltrarxUnidadPolitica(1); return false;"> 

    從DOM0屬性樣式處理程序返回false阻止默認操作; 有關我的博客的更多信息: return false的真實故事

可能還有其他人...

事前要求

與簡單請求(如上所述)不同,“預檢”請求首先將HTTP OPTIONS請求標頭發送到另一個域上的資源,以確定實際請求是否可以安全發送。 跨站點請求這樣被預檢,因為它們可能會影響用戶數據。 特別是在以下情況下,請求將被預檢:

它使用GET或POST以外的方法。 同樣,如果POST用於發送請求類型為application / x-www-form-urlencoded,multipart / form-data或text / plain之外的Content-Type的請求數據,例如POST請求將XML有效負載發送給服務器使用application / xml或text / xml,則對請求進行預檢。 它在請求中設置自定義標頭(例如,請求使用標頭,例如X-PINGOTHER)

資料來源:MDN

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM