为什么我的浏览器在ajax后调用中发送了两个请求?

时间:2016-09-11 17:51:15

标签: javascript jquery ajax

我在网页上添加了一个带有以下标记的链接:

<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功能时,浏览器向服务器发出两个请求,如插图所示(待处理呼叫),第一个POST呼叫包含在js函数和第二个是GET调用,我不知道如何启动。

Browser network calls

有谁知道GET电话的来源?

有人能给我一些关于我必须寻找的地方的线索吗?

2 个答案:

答案 0 :(得分:0)

浏览器会关注您的链接,因为您还没有告诉它不要关注它。 (href=""与&#34;当前页面相同。&​​#34;)

有几种方法可以阻止:

  • 请勿使用链接查看未链接的内容,使用input type="button"button并对其进行样式设置以查看您希望它的外观(此也将帮助辅助软件)。
    (如果您使用button,请确保其不在formtype="button";默认的按钮类型是,奇怪的,"submit"。)

  • 使用jQuery而不是onclick属性连接您的函数,并在事件对象上调用preventDefault

  • href设为javascript:;

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

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

  • href设为#anchor-that-does-not-exist

    (不要使用href="#",除非您希望在关注链接时页面滚动到顶部。)

  • return false添加到onclick

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

    从DOM0属性样式处理程序返回false会阻止默认操作;更多关于我的博客:The true story on return false

可能还有其他人......

答案 1 :(得分:-2)

  

预检请求

     

与简单请求(如上所述)不同,首先是“预检”请求   在另一个上向资源发送HTTP OPTIONS请求标头   域,以确定实际请求是否安全   发送。跨站请求是这样的预检,因为它们可能   对用户数据有影响。特别是,请求是   预防如果:

     

它使用GET或POST以外的方法。此外,如果使用POST发送   使用除以外的Content-Type请求数据   application / x-www-form-urlencoded,multipart / form-data或text / plain,   例如如果POST请求使用XML向服务器发送XML有效负载   application / xml或text / xml,然后请求被预检。它设定   请求中的自定义标头(例如,请求使用标头,例如   X-PINGOTHER)

资料来源:MDN