首页 > JQuery跨域请求,报错。怎么获取返回的数据?

JQuery跨域请求,报错。怎么获取返回的数据?

补充:

我模拟登录抓取图书馆的信息,他的那个"续借",是Ajax提交的,我现在是想在在我的代码里请求,在我这边也可以实现“借阅”,图书馆的后台,我肯定不能修改,主要是在我这边怎么实现。

之前的报错是这样的

原网站的代码:

我用JQuery处理的

代码如下:

<script>
    function getInLib(barcode,num)
    { 
         $('#' + num).hide();
         $.ajax({
         type: "GET",
         url: 'http://******/reader/ajax_renew.php?bar_code=' + barcode + '&time=' + new Date().getTime(),
         dataType: 'jsonp',//跨域请求,加入这个选项即可
         jsonpCallback: "jsonpcallback",
         success: function (response) {
         console.log(response);
         },
         error : function(response) {  
            alert(response);  
        } 
     }); 
         
    }
</script>

点击按钮,浏览器运行结果:

点击错误链接:

这样的话,应该是请求到数据了,之后怎么去掉这个报错,然后取出数据?


如果真的是跨域问题,你找后端提供接口的同学修改一下请求头就好了。

Access-Control-Allow-Origin

设置这个属性,让后端允许你这个地方的请求源的请求即可。

其他方法有,比如通过代理。可以以后详细了解。

我瞄了一眼你的问题,不太像是跨域照成的 - -!更像是语法错误,请求的那个页面里面有写错的内容


题主的问题,就是jsonp获取到的数据,无法调用回调函数,也就不能处理!为什么呢,因为对方服务器返回的数据格式并不能让你调用你的回调函数,所以自然报错了。

刚写了一篇博文,说的很清楚:http://whj.site/post/qian-duan/kua-yu-de...

补充一下:

  1. 所谓这些跨域方法,本质还是需要对方服务器支持,不然无法跨域成功。

  2. 后端没有跨域问题,所以前端无法跨域获取的数据可以通过后端取到,然后给前端。


第一,jsonp只能是GET方法,你怎么写了个POST。
第二,jsonp必须遵循一个统一的格式,即jsonpcallback(/json data/);
可是,你这两种都不符合。。。


自己回答:
当时脑子犯抽了,这个问题,他原网站的ajax构造了一个地址,其实我可以在自己的代码里curl 请求ajax生成的这个地址,然后抓取返回的信息。不是前端能解决的,要后端实现。

谢谢各位大神的帮助,让我学习了很多的跨域知识。

1、Jsonp 只有GET 方式 而且后端必须有相应的格式。
2、跨域请求 只有GET方式,POST不能实现。


先了解一下 Jsonp 的具体运作方式,可以自己用搜索引擎搜索一下,或者直接参见这个回答。

Jsonp 要求后端配合你进行回掉函数的调用,请求的响应应该是

jsonpCallback(/*data here*/);

这种形式,而你的响应内容直接是 html 标签,显然是不可能成功的。

【热门文章】
【热门文章】