jsonp请求知乎API报错 如何处理

$.ajax({
              type: "get",
              async: false,
              url: "http://news-at.zhihu.com/api/4/news/latest",
              dataType: "jsonp",
              jsonp: "callback", 
              success: function (response) {
                  console.log(response);
              },
              error: function (response) {
                  console.log(response);
              }
          });

控制台提示
图片描述

阅读 4.7k
4 个回答
  1. 首先,这个接口返回的是json

  2. jsonp的含义是,由于浏览器的跨域限制(没错,它不是不能跨域,它是不允许你跨域),我们需要借用script标签,这个标签不受浏览器跨域限制,但它只能返回并执行一段javascript代码啊,因此,需要服务器配合返回一个事先定义好的javascript函数,而数据就藏在里面,至于怎么藏,一般其实就是直接返回需要的数据,你再在浏览器端调用这个定义好的函数就能拿到跨域的数据了。

  3. 回到最开头,这个接口返回的是json,根本不是javascript函数

返回的数据结构不对吧,你看看完整的返回是什么?应该是callback({...})这样子的才对

jsonp跨域也是需要服务器端支持的,如果这个本身就不支持jsonp,那也没有用,需要自己的服务器做代理。

http://news-at.zhihu.com/api/4/news/latest 这个返回的是 json 所以不能用 jsonp 来处理,通过服务器端php或python获取,然后提供接口前端获取

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