获取原始json字符串使用jquery ajax方法遇到问题

时间:2010-06-22 09:04:11

标签: jquery ajax json jsonp

我使用jquery ajax方法,设置数据类型json,我从跨域服务器获取jsonp响应。但我想要的是json响应的原始字符串。所以我设置数据类型文本,但我只有一个空字符串。

      $.ajax({
        url:"http://api.douban.com/book/subject/isbn/9787802057388?alt=xd&callback=?",
        dataType:'text',
        success:function(data){
            alert(data);
        } //endof success
    }); //endof .ajax

任何人都可以告诉我为什么? 如果使用getJSON方法执行此操作,如何获取json的原始字符串?

1 个答案:

答案 0 :(得分:3)

dataType设置为text会阻止jQuery将请求作为JSONP处理。 jQuery在后台为这些类型的请求做了一些魔术(在URL中用callback=?替换函数名,并将success函数定义为全局函数)。

为什么您希望响应是原始文本?无法从JSONP请求获得 JSON的响应,因为JSONP的性质要求响应包含在函数调用中。

dataType设置为jsonp有效,但当然会返回一个对象。

$.ajax({
    url:"http://api.douban.com/book/subject/isbn/9787802057388?alt=xd&callback=?",
    dataType:'jsonp',
    success:function(data){
        alert(data);
    } //endof success
}); //endof .ajax​​​​

如果你想要一个字符串,你可以对服务器上的响应的一部分进行双json编码,以便它作为字符串接收,或者在客户端上使用JavaScript JSON编码器并再次编码,但两者都是真的不是理想的解决方案。对象更加实用和有用。