ajax随机调用jsonp成功

时间:2014-09-08 07:40:46

标签: jquery ajax jsonp

我尝试创建跨域测试以从不同页面获取数据。所有页面都使用相同的jsonp。

m1({"appNo":"7","user":"carol","uid":"id001"})

这是ajax函数: url_6是网址列表url_6 [a.jsp,b.jsp,c.jsp ....]

$('document').ready(function() {
$.each(url_6, function(index,appPage) {
$.ajax({
          type: 'GET',    
          url: appPage,
          dataType: "jsonp",
          crossDomain: true,          
          cache:false,
           jsonp:"callback", 
           jsonpCallback: 'm1',
          success: function(data){  
                    uid1=data.uid;
                    APPList1.push(new DataObj(title1,uid1));
                    },
          error:function(jqXHR, textStatus, errorThrown){
            alert(textStatus);
                                    }
        });
   });

});

我有5个页面包含相同的jsonp,有时1,3,5个工作和2个,4个解析错误(但chrome控制台网络显示js文件成功返回200并且文件包含数据。 当我刷新页面时,1,2,3获得成功,4,5获得错误。

回调网址与https://www.otherdomains/xxx.jsp?callback=m1&_=1410160716447

类似

我试图在ajax函数和jsonp中删除“m1”并改为使用“callback”,但所有请求都收到错误消息。

怎么回事?

Why do a random number of these JSONP requests fail?与我的问题非常相似,但我不确定......

这是在jsp:

中创建的jsonp
<%@ page language="java" contentType="application/javascript; charset=UTF-8" pageEncoding="UTF-8" %>
String str = "{\"appNo\":\"" + "1" + 
                                "\",\"user\":\"" + user + 
                                "\",\"uid\":\"" + uid +  "\"}";

String json = "ml(" + str + ")";

response.getWriter().write(json);

1 个答案:

答案 0 :(得分:0)

最后,我发现了问题。

因为在ajax请求jsonp响应后,它会创建一个回调函数。就我而言,它叫'm1'。但是,因为我的所有jsonp响应都是:

m1({"appNo":"7","user":"carol","uid":"id001"})
因此,他们使用相同的回调函数是javascript。 我在请求中得到了200 OK,但在jsonp响应回来之后,m1函数正被另一个m1回调使用。所以,有些jsonp响应没有回调函数可供使用。

当我将jsp中的jsonp名称修改为m1,m2,m3 ....并且还在ajax函数中更改时,问题就消失了。

但是,我想尝试使用由ajax自动生成的回调函数....

相关问题