首页 > jsonp 接收响应内容?

jsonp 接收响应内容?

jsonp调用一个服务,服务返回值为无格式文本,比如“helloworld“,并且此服务不可修改(不受控制)。jsonp请求代码如下:

 $.ajax({
    url:'http://www.example.com/',
    type:'post',
    dataType: 'JSONP',
    data:{
        p1:'p1',
    },
    success: function (v) {
        console.log(v);
    }
});

报错 Uncaught SyntaxError

烦请对jsonp有理解的同学指定一个解决思路,感激不尽!

更新

1.我感兴趣的是,在服务端不受控制的前提下,拿到响应文本是否具有可行性。
2.jquery肯定是拿到了服务器端的文本,并且将其当做js来执行,我想,既然已经拿到了,能不能先不要执行,而是让我来处理一下呢?

再更新

看了 @拾指相扣 的回答,对jsonp有了一个比较清晰的理解:json本质上是通过将请求模拟为<script>标签加载,响应数据直接被浏览器交给js引擎执行,而不受jquery控制,所以在服务端不受控制的前提下,拿到响应文本是否具有可行性。这个问题的答案是否定的,根本没有可行性。

已经将此问题整理为博文,发布到:http://www.yanwushu.com/post/21.html


jsonp应该是借助script标签实现的,不能发送post请求。


jsonp本来就可以处理,不过是使用js函数处理的。。。不过要带callback的函数名,然后你的js创建该函数,接收之后就会自动调用那个函数。。。曾经调用过淘宝的jsonp


jsonp就要求返回值为json,怎么能是“返回值为无格式文本”,不能这么搞哦


你都不明白JSONP是啥。
因为同源策略限制,所以普通XHR是行不通的,但是script是不受这个限制的。
简单讲所谓jsonp是客户端发送一个script脚本,通常带有其他参数和一个回调函数名,然后服务端根据接受到的参数里回调函数名比如callback({data...}), 拼装数据在函数里,然后脚本加载成功,执行本地同名回调,从而达到跨域。
你自己也说了服务端不受控制,JSONP是需要服务端配合的,你请求之后服务端还是返回一个文本,这个文本在js里执行,肯定就会报错,也就是你提到的Uncaught SyntaxError
详细的你百度就好

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