JSONP跨域GET200但是还是报错,直接进入错误处理程序

代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Ajax请求json数据</title>
    <script type="text/javascript" src="jquery-3.3.1.js"></script>
</head>
<body>
    <button id="btn">ajax请求</button>

    <script type="text/javascript">

        $("#btn").click(function() {
            $.ajax({
               type : "get",
               async: false,
               url : "http://yunxtec.com/test/adlist.json",
               dataType: "jsonp",
               jsonp:"callback",
               success : function(data) {
                       alert(data[0][1]);
               },
               error : function(r) {
                       alert("fail");
               }
           });
        })
    </script>
</body>
</html>

报错截图如下:
图片描述
GET状态为200:
图片描述
要获取的是json网页的数据,网页截图如下:
图片描述

请问问题出在哪里呢?如果要获取adlist的index要怎么写呢?可以的话贴一下代码~~

问题困扰了我这个小白挺久的,求助!!

阅读 4.6k
4 个回答

jsonp时返回数据的格式不对,应该是 callback(json) 而不是 json

  1. 从报错来看是语法错误,看起来不像是请求的问题而是这个json有问题。找个网站测一下这个json的格式吧。
  2. 获取index? 数组方法map拿全部或者find拿1个

废话不多说,直接代码。

$.ajax({
          type: "POST",
          url: '/baidu/map/initLink',
          dataType : "json",
          contentType: "application/json;charset=utf-8",
          success: function(data){
              
                  //console.log(data);
                for(var i=0;i<data.length;i++){
                    var polyline = new BMap.Polyline([
                    new BMap.Point(data[i].callLongitude,data[i].callLatitude),//起始点的经纬度
                    new BMap.Point(data[i].calledLongitude,data[i].calledLatitude)], //终止点的经纬度
                    {strokeColor:"green",//设置颜色 
                    strokeWeight:3, //宽度
                    strokeOpacity:0.5});//透明度
                     map.addOverlay(polyline);    
                }
          }
      });
      

你这数据是json,不是jsonp,如果服务器不归你管,你就得自己想办法弄个反向代理

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进