我刚刚注意到,当我制作Angular(1.4.8)AJAX POST请求时,它在chrome网络选项卡中可见两次(第一个(355B)angular.js:10765
和第二个(812B),other
其中第一个看起来像请求,第二个作为响应 - 只有第二个包含响应数据).我使用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请求需要预检OPTIONS请求.
据推测(因为除了他们要去的URL的末尾之外你没有显示请求的任何细节),这些请求中的第一个是预检OPTIONS请求.