Ajax 使用jQuery/Jsonp发送跨域请求并解析结果?

Ajax 使用jQuery/Jsonp发送跨域请求并解析结果?,ajax,jquery,jsonp,Ajax,Jquery,Jsonp,我正在尝试使用jQuery从远程跨域站点获取和解析数据。为了避免同源策略和跨域问题,我使用了jsonp <html> <head> <title>Ajax Sample</title> <script type="text/javascript" src="http://code.jquery.com/jquery-1.7.min.js"></script> </style> <script>

我正在尝试使用jQuery从远程跨域站点获取和解析数据。为了避免同源策略和跨域问题,我使用了jsonp

<html>  
<head>  
<title>Ajax Sample</title>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.7.min.js"></script>
</style>
<script>
$(document).ready(function(){
    //Obviously the service wont give a JSON format response
    var url='http://stackoverflow.com/search?q=Cross+domain';
    $.ajax({
     url:url,
     dataType: 'jsonp',
     success:function(data){
         console.log(data);
     },
     error:function(){
         alert("Error");
     },
    });
});
</script>
<body>
</body>  
</html>


那么如何以正确的方式进行呢?

如果远程端没有为其JSONP输出设置正确的内容类型头,那么第一个警告是正常的。这只是一个警告,不会造成伤害

如果第二个错误是试图访问stackoverflow网站,那么该错误只是因为您试图向JS解释器抛出HTML代码

请注意,JSONP请求必须以有效JS脚本的形式接收JSON。它不适用于任何其他类型的输入


出于安全原因,您无法从其他来源访问其他类型的资源,除非这些资源发送适当的访问控制允许来源HTTP头。

代码开头的注释解释了问题,不是吗?也就是说,服务显然不会给出JSON格式的响应-你不能只是告诉jQuery使用jsonp,然后期望另一端的服务神奇地满足它。response应该包含jsonp内容,而不是html或其他任何内容。stackoverflow url只是一个例子,关键是:我不知道服务返回哪种数据。大多数网站没有开放的API或返回json数据。我只是想找到一个通用的方法。试试@SamSu,除非数据是JSONP,否则你不能使用JSONP访问任意的跨源数据!正如你在回答和评论中所说的,我试图做的是不可能的?因为请求的站点不返回jsonp?在我的情况下,服务器返回html,所以我应该如何解析它?@SamSu这是不可能的,除非远程站点设置了适当的HTTP头。这还取决于你实际想用这些资源做什么。例如,如果您只想检索结果,但又想丢弃结果,可以将URL设置为图像标记的src属性。是的,只需检索结果并在google chrome扩展演示中显示数据。因此,我无法让服务器端满足我的需要。我只是在客户端有html和javascript。啊,如果这是一个chrome扩展,那么也许你需要这个-
Resource interpreted as Script but transferred with MIME type text/html: "http://stackoverflow.com/search?q=Cross+domain&callback=jQuery1708665772899985313_1374154944485&_=1374154944492"
Uncaught SyntaxError: Unexpected token <