在我的应用程序中,我想将ajax请求发送到url(这是一个通用的html网页,就像在线文章一样),然后获取响应(这是页面的内容)并执行以下操作
但目前我被跨域请求问题阻止了,我知道这是一个老问题,我曾经遇到过同样的问题。
那时,我会JSONP
方法来解决问题,但这次它对我没有用处:
$.ajax({
url: newurl, //the url will be like https://techcrunch.com/2016/12/16/google-maps-now-notes-if-a-location-is-wheelchair-accessible/
type:'GET',
dataType:'JSONP',
success:function(data){
console.log(data)
}
})
但这次我遇到了错误消息"Uncaught SyntaxError: Unexpected token <"
所以上次我使用jsonp方法成功地从API获取JSON数据,但是这次消息,unexpected token <
是否意味着html标签?如果我还想使用JSONP,如何解决这个问题?
我还尝试了CORS
的第二种方法。所以我也尝试在ajax
方法中设置所需的标题如下:
$.ajax({
url: newurl,
type:'GET',
dataType:'html',
headers: {
"Access-Control-Allow-Origin": "*",
"Access-Control-Allow-Headers":"X-Requested-With"
},
success:function(data){
console.log(data)
}
})
但似乎没有任何帮助。有任何想法吗?谢谢
编辑:
经过一番研究和调试,发现CORS方法必须需要服务器端的工作;和JSONP可以是一个解决方案但只适用于JSON格式数据,对于HTML代码,它可以&#39;工作。
正确的解决方案是YQL(雅虎查询语言),它可以支持html数据的这种交叉源提取。