Вложенный $ .getJSON, вызовы не работают - PullRequest
1 голос
/ 01 марта 2012
    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();
            }
        });
    }

Мне нужно выполнить два ajax-вызова через функцию getJSon в jQuery.

Дело в том, что когда один из вызовов выполнен и data.flag равен true, вызовите вторую функцию getJSon (Мне нужен результат первого звонка как условие во втором звонке).Но когда функция запускается, код «alert (3)» не может быть выполнен.

Любая помощь будет оценена.

1 Ответ

0 голосов
/ 01 марта 2012

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();
        }
    });
}
...