Quantcast
Channel: 小斌の随笔
Viewing all articles
Browse latest Browse all 50

Javascript中Ajax获取function的返回值

$
0
0

最近在做关于javascript中的ajax问题,最初用的是jQuery中的$.ajax,最后发现该方法对IE部分版本支持有问题,于是准备使用XMLHttpRequest进行ajax处理,在此过程中发现Javascript中Ajax获取function的返回值,

function doCheck(){

    var ajax=InitAjax();

    ajax.open("POST", url, true);

    ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded"); 

    ajax.send(postStr);

if (ajax.readyState == 4 && ajax.status == 200) {

var data = JSON.parse(ajax.responseText);

    if (data.flag == '1') {

        var msg = data.data;

        if(msg.indexOf('获得')>=0){

            var sco = msg.replace('获得','');

            grade = sco;

        }else{

            grade = 0;

        }

    }else{

        grade = data.data;

    }

}

return grade;

}

现在的问题是,每次在function doCheck里获取到的grade值为0。
经过调试脚本后发现,function grade在每次执行到ajax.readyState == 4的时候会跳出方法,去执行下面的语句,然后不知道是什么时候又会执行到ajax.status == 200的if条件里面去,然后得到的resultStr 值是正确的。但是在它跳出方法执行下面的语句的时候已经报错了,因为function AddChildNode的 childClassStr还没有得到值,然后去做split,报错了。

错误就出在该ajax请求为异步的,所以获取不到。如果改为同步即可。具体为:ajax.open("POST", url, true);改为ajax.open("POST", url, false);

终于搞清楚这家伙问题出在哪了。哈哈~



LOFTER:小斌の随笔   http://xiruibin.lofter.com/post/c97c5_59ade46

Viewing all articles
Browse latest Browse all 50

Latest Images

Trending Articles





Latest Images