嵌套的$ .getJSON,调用不起作用

时间:2012-03-01 09:48:14

标签: jquery ajax json getjson

    function dispatchVehicle(){
        if(!chickAll()){
            return false;
        }
        var action = window.url + '?&method=dispatchVehicles'
                + "&conLclFlag=" + conLclFlag
                + "&containerId=" + containerId 
                + "&vehicleNameFlag=1"
                + "&t=" + (new Date()).getTime();

        jQuery.getJSON(action, $('#vehicleForm').serialize(), function(data) {
            if(data.flag){
                if (window.confirm(data.message)) {
                    alert(1);
                    var action1 =  window.url + '?&method=dispatchVehicles'
                        + "&conLclFlag=" + conLclFlag
                        + "&containerId=" + containerId 
                        + "&vehicleNameFlag=2"
                        + "&t=" + (new Date()).getTime();
                    alert(2);
                    jQuery.getJSON(action1, $('#vehicleForm').serialize(), function(data1) {
                    alert(3);
                    if(!data1.flag){
                        alert(data1.message);
                    }
                    if (data1.succ) {
                        window.parent.location.reload();
                        window.parent.ClosePop();
                    }
                    });
                }
            }
            if (data.succ) {
                window.parent.location.reload();
                window.parent.ClosePop();
            }
        });
    }

我需要通过jQuery的getJSon函数执行两次ajax调用。

问题在于,一旦执行了一个调用并且data.flag为真,就调用第二个getJSon函数(因为我需要第一个调用的结果作为第二个调用中的条件)。 但是当函数运行时,代码“alert(3)”无法执行。

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

AFAIK,.getJSON()应该嵌套好。

你可以尝试下面我的代码版本但是说实话,我所做的就是重新安排事情以提高效率,并且更好地保证内部.getJSON()与外部相同,并且需要变异。嵌套和结构在其他方面是相同的。

的javascript:

function dispatchVehicle(){
    if(!chickAll()){
        return false;
    }
    var action = window.url + '?' + $('#vehicleForm').serialize();//reusable string
    var dataObj = {//reusable object
        method: 'dispatchVehicles',
        conLclFlag: conLclFlag,
        containerId: containerId, 
        vehicleNameFlag: 1,
        t: (new Date()).getTime()
    };

    $.getJSON(action, dataObj, function(data) {
        if(data.flag){
            if (window.confirm(data.message)) {
                alert(1);
                //now reuse action and dataObj with a couple of changed properties
                dataObj.vehicleNameFlag = 2;
                dataObj.t = (new Date()).getTime();
                alert(2);
                $.getJSON(action, dataObj, function(data1) {
                    alert(3);
                    if(!data1.flag){
                        alert(data1.message);
                    }
                    if (data1.succ) {
                        window.parent.ClosePop();
                        window.parent.location.reload();
                    }
                });
            }
        }
        if (data.succ) {
            window.parent.location.reload();
            window.parent.ClosePop();
        }
    });
}