我使用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的原始字符串?
答案 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编码器并再次编码,但两者都是真的不是理想的解决方案。对象更加实用和有用。