Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/459.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 不允许对API的Ajax调用返回错误HTTP/1.1 405方法_Javascript_Jquery_Ajax_Google Maps_Cors - Fatal编程技术网

Javascript 不允许对API的Ajax调用返回错误HTTP/1.1 405方法

Javascript 不允许对API的Ajax调用返回错误HTTP/1.1 405方法,javascript,jquery,ajax,google-maps,cors,Javascript,Jquery,Ajax,Google Maps,Cors,我写了一个非常简单的应用程序(在第页),它有一个地图,用户可以在上面画圆圈。第一个圆圈是源,下一个圆圈是目的地。我必须对API URL进行Ajax调用,以获取用户在地图上绘制的圆圈内的所有单元格ID 以下是我迄今为止所做的尝试: <html> <head> <title>Drawing tools</title> <meta name="viewport" content="initial-scale=1.0, user-

我写了一个非常简单的应用程序(在第页),它有一个地图,用户可以在上面画圆圈。第一个圆圈是源,下一个圆圈是目的地。我必须对API URL进行Ajax调用,以获取用户在地图上绘制的圆圈内的所有单元格ID

以下是我迄今为止所做的尝试:

<html>
  <head>
    <title>Drawing tools</title>
    <meta name="viewport" content="initial-scale=1.0, user-scalable=no">
    <meta charset="utf-8">
    <link type="text/css" href="res/jquery-ui.css" rel="stylesheet" />
    <script type="text/javascript" src="res/jquery.min.js"></script>
    <script type="text/javascript" src="res/jquery-ui.min.js"></script>
    <script src="https://maps.googleapis.com/maps/api/js?v=3.exp&signed_in=true&libraries=drawing,places"></script> 
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script type="text/javascript"> 

 var latitude;
 var longitude;
 var radius;

  (function () {
     var circle;

   function initialize() {
    var mapOptions = {
      center: new google.maps.LatLng(-34.397, 150.644),
      zoom: 8
   };

  var map = new google.maps.Map(document.getElementById('map-canvas'),
    mapOptions);

  var drawingManager = new google.maps.drawing.DrawingManager({
    drawingMode: google.maps.drawing.OverlayType.MARKER,
    drawingControl: true,
    drawingControlOptions: {
      position: google.maps.ControlPosition.TOP_CENTER,
      drawingModes: [
        google.maps.drawing.OverlayType.MARKER,
        google.maps.drawing.OverlayType.CIRCLE,
        google.maps.drawing.OverlayType.POLYGON,
        google.maps.drawing.OverlayType.POLYLINE,
        google.maps.drawing.OverlayType.RECTANGLE
      ]
    },
    markerOptions: {
      icon: 'images/beachflag.png'
    },
    circleOptions: {
      fillColor: '#ffff00',
      fillOpacity: 1,
      strokeWeight: 5,
      clickable: false,
      editable: true,
      zIndex: 1
    }
  });
  drawingManager.setMap(map);
  google.maps.event.addListener(drawingManager, 'circlecomplete', onCircleComplete);
 }

 function onCircleComplete(shape) {
      var map=shape.getMap();
      var circle;
       //create an array where we store the circles
       if(!map.get('circles')){
          map.set('circles',[]); 
        }
       shape.setOptions(
                      (!map.get('circles').length)
                        ?//first circle
                         {type:'source',
                          fillColor:'#ff0000'
                         }
                        ://other circles
                         {type:'destination'}
                    );
      //push the circles onto the array 
      map.get('circles').push(shape);

        circle = shape;
        radius = circle.getRadius();
        center = circle.getCenter();
        latitude = circle.getCenter().lat();
        longitude = circle.getCenter().lng();

         doStuff();
     //    alert(radius);

    }   
   google.maps.event.addDomListener(window, 'load', initialize);
 })();


function doStuff() {
  var where_stm = 'within_circle('+latitude+','+longitude+','+radius+')';

     $.ajax({
         url: 'https://api.dandelion.eu/datagems/v2/SpazioDati/milano-grid/data?$limit=10&$offset=0&$app_id=7b22cb45&$app_key=dc836a05b4f775d8813d253ba07a4570',
         type: 'GET',
         contentType: "application/json",
         dataType: "json",
         data: {where:where_stm},
         success: function(response) {
               var ParsedObject = JSON.parse(response);        
                   console.log(ParsedObject);
                   },
         error: function(XMLHttpRequest, textStatus, errorThrown) {
                            console.log("error :"+XMLHttpRequest.responseText);
                    }
        });
  }

    </script>
  </head>  
<body>
  <div id="container">
     <div id="sidebar-left">
        <p> Please select your source place by using drawing tools on the map. </p>
       <div id="destinations">
        Now you can select one or more destination on the map using the same drawing tools 
       </div>

       <button onClick="doStuff()">Run Code</button>

     </div>
     <div id="map-canvas"></div>
    </div>
  </body>
</html>

绘图工具
纬度;
var经度;
变异半径;
(功能(){
var圈;
函数初始化(){
变量映射选项={
中心:新google.maps.LatLng(-34.397150.644),
缩放:8
};
var map=new google.maps.map(document.getElementById('map-canvas'),
地图选项);
var drawingManager=new google.maps.drawing.drawingManager({
drawingMode:google.maps.drawing.OverlyType.MARKER,
drawingControl:对,
drawingControlOptions:{
位置:google.maps.ControlPosition.TOP_CENTER,
绘图模式:[
google.maps.drawing.overlytype.MARKER,
google.maps.drawing.overlytype.CIRCLE,
google.maps.drawing.OverlyType.POLYGON,
google.maps.drawing.OverlyType.POLYLINE,
google.maps.drawing.overlytype.RECTANGLE
]
},
标记选项:{
图标:“images/beachflag.png”
},
循环操作:{
填充颜色:'#ffff00',
不透明度:1,
冲程重量:5,
可点击:false,
是的,
zIndex:1
}
});
drawingManager.setMap(map);
google.maps.event.addListener(drawingManager,'circlecomplete',onCircleComplete);
}
函数onCircleComplete(形状){
var map=shape.getMap();
var圈;
//创建一个数组,在其中存储圆
如果(!map.get('circles')){
map.set('circles',[]);
}
shape.setOptions(
(!map.get('circles').length)
?//第一圈
{类型:'source',
填充颜色:“#ff0000”
}
://其他圈子
{类型:'destination'}
);
//将圆推到阵列上
map.get('circles')。push(shape);
圆形=形状;
半径=圆。getRadius();
中心=圆。getCenter();
纬度=圆.getCenter().lat();
经度=圆。getCenter().lng();
doStuff();
//警报(半径);
}   
google.maps.event.addDomListener(窗口“加载”,初始化);
})();
函数doStuff(){
其中_stm='在_圆内('+纬度+','+经度+','+半径+');
$.ajax({
网址:'https://api.dandelion.eu/datagems/v2/SpazioDati/milano-grid/data?$limit=10&$offset=0&$app_id=7b22cb45&$app_key=dc836a05b4f775d8813d253ba07a4570',
键入:“GET”,
contentType:“应用程序/json”,
数据类型:“json”,
数据:{where:wherestm},
成功:功能(响应){
var ParsedObject=JSON.parse(响应);
console.log(ParsedObject);
},
错误:函数(XMLHttpRequest、textStatus、errorshown){
log(“错误:+XMLHttpRequest.responseText”);
}
});
}
请使用地图上的绘图工具选择源位置

现在,您可以使用相同的绘图工具在地图上选择一个或多个目的地 运行代码
我的问题:当我在地图上画一个圆时,我在控制台上看到这个错误:
选项https://api.dandelion.eu/datagems/v2/SpazioDati/milano-grid/data [HTTP/1.1 405方法不允许350ms]
当我点击它时,我看到:

我很感激你的所有想法,
谢谢

我通过邮递员尝试了一个请求,使用GET和(仅!)您在代码片段中提供的URL:200/OK,没有缺陷。在没有“数据”的情况下尝试。它只应该用于POST请求,而不是GET请求

但由于您需要传递您的“UnnIyLoad”数据集,所以您应该考虑使用POST,它可以访问数据属性的使用,


或者通过在URL内传递数据参数发出GET请求。因为我不知道API,所以我不能为您做出选择

405方法不允许,意味着它与方法类型不匹配,它说方法类型“GET”不受支持。谢谢,实际上,我也试过了。。我删除了数据部分,并将变量放在URL中,结果成功了