跨域获取html时报错:Uncaught SyntaxError: Unexpected token

需求如下:

通过前端抓取自己segmentfault主页的前几篇文章


请求部分的代码如下:

$.ajax({

        url: sfUrl,

        dataType: 'jsonp',

        success: function(data) {

            parseArticle(data);

        },

        error: function(err) {

            console.log(err)

        }

    })

运行结果如下:

Uncaught SyntaxError: Unexpected token <

见下图(第二行打出的是err信息)

https://img.mukewang.com/5c679c6200016a6208000036.jpg

SourcesNetwork的信息来看数据http事务是完成了

https://img3.mukewang.com/5c679c6400017fcb05430160.jpg

数据也返回了

https://img3.mukewang.com/5c679c6600016c3108000311.jpg

个人认为是解析出现了问题,但是仍然不知道怎么解决。

问题如下

  • 为什么会报错

  • 怎样解决这个问题


弑天下
浏览 815回答 1
1回答

拉风的咖菲猫

问题解决了。1.为什么会报错JSONP返回的数据是应该是形如:callback_function(html); //在上例中callback_function()就是success然而由于返回的数据是html,所以在执行、callback_function(html)的时候,由于html的格式形如<!DOCTYPE html><html><head>&nbsp; &nbsp; <meta charset="UTF-8">&nbsp; &nbsp; <title>Document</title></head><body>&nbsp; &nbsp;&nbsp;</body></html>这个样所作为一个参数执行就会报错,就是上面出现的:Uncaught SyntaxError: Unexpected token <2.怎么解决由于后台传回的就是html,这是我们不可改变的,而且向直接将html结构作为参数是总会出问题的 ,所以只能换一种跨域方式了。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript