日期:2014-05-16  浏览次数:20700 次

jsonp的解析问题
本帖最后由 Rico_ 于 2013-07-22 23:12:36 编辑
项目中调用了新浪微博的api 返回的是jsonp数据,解析时不会,各位大侠给小弟看下,谢啦
  
 一般我们获取到的服务器返回的的json都是类似于这种的。举个例子{"urls":[
{"result":true,"url_short":"http://t.cn/h5FGy","url_long":"http://www.cnblogs.com","type":0}
]} 一个完整的json数据。名值对一一对应,数组对象结构清晰


但是我现在获取到的却是这个。(我通过alert获取的)
jQuery18308495466143358499_1374500715357({"statuses":[{"created_at":"Mon Jul 22 21:31:40 +0800 2013","id":"3602976080238037","mid":"3602976080238037","idstr":"3602976080238037","text":"\u4f60\u4e0d\u662f\u6211\u7684\u795e\u5bf9\u624b@\u6012\u543c\u7684\u571f\u5305\u5b50 \u4f60\u662f\u6211\u7684\u5c0f\u4f19\u4f34\u548c\u732a\u961f\u53cb[\u9177] \u6211\u5728:http:\/\/t.cn\/zQZVsKR","source":"。。。后面省略


但是现在我期望获取到的是这种
{"statuses":[{"created_at":"Mon Jul 22 21:27:00 +0800 2013","id":"3602974909414937","mid":"3602974909414937","idstr":"3602974909414937","text":"\u4e0b\u6b21\u518d\u6765\u5e0c\u671b\u6709\u4f60@\u8c22\u6f47x-x \u6211\u5728\u8fd9\u91cc:http:\/\/t.cn\/zHecOsL","source":"。。。后面省略

也就是说前面多出了jQuery18308495466143358499_1374500715357
以至于 getdata.data[0]获取到的是j
为什么?然后我上网查了
显示如下:
$.ajax({ 
type : "get", 
async:false, 
url : "ajax.ashx", 
dataType : "jsonp", 
jsonp: "callbackparam",//传递给请求处理程序或页面的,用以获得jsonp回调函数名的参数名(默认为:callback) 
jsonpCallback:"success_jsonpCallback",//自定义的jsonp回调函数名称,默认为jQuery自动生成的随机函数名

确实,我的页面上引用了jquery1.8.3
但是现在问题是如何获取我期望获取的呢?(就是前面去掉jQuery18308495466143358499_1374500715357然后进行解析)但是肯定有一个最简单粗暴的办法是用js的字符串操作函数去掉,但是那边返回来的不都是固定的前缀也就是说这一段字数是不断再改的。所以请求一个正确的办法。或者各位大侠都是如何解析jsonp数据的呢?


在此,小弟问一下jQuery18308495466143358499_1374500715357为什么会出现,应该怎么解析他返回过来的呢?完整返回json见http://pan.baidu.com/share/link?shareid=2950801806&uk=2416608530




我的代码
 $(document).ready(function () {

            $.ajax({

                url: "https://api.****.json?***",
                type: "GET",
                dataType: "jsonp",
                cache: false,
                success: function (getdata) {
                    alert(getdata);