2 tashuo123 tashuo123 于 2017.08.29 09:58 提问

关于AJAXRequest的问题,为什么第二个get请求没有接受到返回值

function deadlinkMonitor(taskid,siteurl)
{
//debugger;
//updatestatus(taskid);
var ajax = new AJAXRequest();
ajax.async = true;//异步AJAX
ajax.get(
"updatestatu.jsp?taskid="+taskid+"",
function(obj){
var res = obj.responseText;
if(res)
{
window.location.href ='/monitor/madmin/checkbot/list.jsp?tasktype=<%=tasktype%>';
}
});

    ajax.async = false;//异步AJAX
    ajax.get(
            "deadlink.jsp?siteurl="+siteurl+"&taskid="+taskid+"",
            function(obj){
                var res = obj.responseText;
                if(res)
                {
                    window.location.href ='/monitor/madmin/checkbot/list.jsp?tasktype=<%=tasktype%>';
                }
            });

}

5个回答

showbo
showbo   Ds   Rxr 2017.08.29 10:12
已采纳

AJAXRequest是什么框架。。没用过,你确认能使用同一个AJAXRequest的实例对象而不要重新生成新的AJAXRequest实例?

tashuo123
tashuo123 回复showbo: 恩 这样写有问题,我准备试试局部刷新
3 个月之前 回复
showbo
showbo 回复她说随意: 不可能,只能有一个跳转,location.href='xxxx'就是在当前窗口跳转,哪个ajax先返回就执行跳转,然后卸载页面的js代码,另外一个当然无法执行。要么就先执行同步的那个ajax,然后用window.open打开新窗口,另外一个异步的async=true的用location.href跳转。要不异步的用window.open打开会被单做广告拦截掉
3 个月之前 回复
tashuo123
tashuo123 回复showbo: 你的意思是我这样写只能有一个跳转成功的? 那有没有什么办法可以让两个都跳转成功的
3 个月之前 回复
tashuo123
tashuo123 回复showbo: 我的业务是这样的,点击执行的时候会改变执行状态 改为执行中(要改变数据库的字段),等程序执行完毕的时候,改变状态为执行完毕。
3 个月之前 回复
tashuo123
tashuo123 回复showbo: 我之前好像看到别人说可以共享一个AJAXRequest实例的
3 个月之前 回复
showbo
showbo 而且你有2个ajax请求,如果第一个成功了也会跳转,你到时是要搞什么??2个跳转只能有一个跳转成功的
3 个月之前 回复
Small_Mouse0
Small_Mouse0   Ds   Rxr 2017.08.29 10:05

【deadlink.jsp?siteurl="+siteurl+"&taskid="+taskid+""】,,,请求的jsp??

你用浏览器访问一下这个,,这个get的地址,,看能不能访问,,,

方法没看出来错误,你先测一下是不是请求了没返回

Small_Mouse0
Small_Mouse0 回复她说随意: 是不是因为你第一个get吧页面刷新了,,,把第一个get去了,,试试
3 个月之前 回复
tashuo123
tashuo123 第一个get请求是改变一下状态,然后刷新一下页面,这个没问题,但是第二个get请求,可以请求到页面,从服务端也返回数据了,但是在第二个get请求接收不到反馈的数据
3 个月之前 回复
Small_Mouse0
Small_Mouse0 回复她说随意: function(data,status),,换个方法试试,,
3 个月之前 回复
tashuo123
tashuo123 有返回的数据,但是alert(res)的时候,没有弹出框,这是怎么回事啊
3 个月之前 回复
qq_22590821
qq_22590821   2017.08.29 10:09

alert一下res,看看是否是true,还是"true",希望能帮到你!

tashuo123
tashuo123 回复引火上身: 哥 这样不行的,之前我这样写,后面的代码都不执行的,而且我返回的值就是boolean类型的,直接if(res)就可以了
3 个月之前 回复
qq_22590821
qq_22590821 回复她说随意: 你试着使用if(true === res);
3 个月之前 回复
tashuo123
tashuo123 第一个get请求alert(res),返回的是true,但是第二个alert(res),不弹框,我很头疼
3 个月之前 回复
li_ling_ren
li_ling_ren   2017.08.29 10:33

觉得你的用法有问题,一个ajax对象,有两个请求。因为是异步请求,所以你第一个结果还没有返回来之前,下面这个就有可能开始执行了。

tashuo123
tashuo123 我写的有问题,不能这个写
3 个月之前 回复
zy841958835
zy841958835   Ds   Rxr 2017.08.29 10:44

你把第一个ajax的请求调成同步的试试 可能是第二个请求先于第一个

zy841958835
zy841958835 如果你想写出异步的也可以 你可以把第二个请求写成第一个的callback里面
3 个月之前 回复
tashuo123
tashuo123 恩。我写的有问题,
3 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片