javascript – 为什么Angular AJAX请求在chrome网络选项卡中可见两次

前端之家收集整理的这篇文章主要介绍了javascript – 为什么Angular AJAX请求在chrome网络选项卡中可见两次前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我刚刚注意到,当我制作Angular(1.4.8) AJAX POST请求时,它在chrome网络选项卡中可见两次(第一次(355B)为angular.js:10765,第二次(812B)为其他第一次看起来像请求,第二次为响应 – 只有第二个包含响应数据).
我使用jQuery做出了相同的请求,它出现在一个单一的请求中(812B).

码:

return function ( id ) {
  var deferred = $q.defer(),data = {
      id: id || null,range: tbDateRange.get( true )
    }
    ;

  /* TODO - REMOVE */
  $.ajax({
    method: 'POST',url: path,dataType: 'JSON',data: data
  });

  $http.post( path,data )
    .success( function ( data ) {
      /*...*/
      deferred.resolve( data );
    } )
    .error( function ( error ) {
      /*...*/
    } );
  return deferred.promise;
};

和网络标签截图:

解决方法

Angular默认为POST JSON格式的数据而不是表单编码数据(jQuery不是这样,因为我使用jQuery做出相同请求的语句是不正确的).

跨域,JSON格式,POST请求需要preflight OPTIONS request.

据推测(因为除了他们要去的URL的末尾之外你没有显示请求的任何细节),这些请求中的第一个是预检OPTIONS请求.

原文链接:https://www.f2er.com/ajax/240895.html

猜你在找的Ajax相关文章