Javascript函数如果为True

时间:2014-04-29 21:25:57

标签: javascript if-statement return

我正在调用连接到函数中的if语句的子函数。虽然子函数返回true或false,但它不起作用

   if (functionAAA()){
       alert("111111111");

       if (functionBBB()){
                      alert("2222222");

           if (functionCCC()){
                          alert("333333333333");



           }            
       }
   }

functionAAA,functionBBB,functionCCC返回true。我期待得到这些警报,但他们不能工作。我做错了什么?

我认为问题是功能方面.. functionAAA定义是

function functionAAA(){
    var indexId = 1;

    var dataItem = datasourceAppList.at(indexId);
    var deviceKey = localStorage.getItem('LsDeviceKey');
    var baseUrl = localStorage.getItem('LsBaseUrl');    
    var errorMessageInfoText;
    var status

    $.ajax({

        url: baseUrl + '/test/cloud/FE/1.0/test.php',
        data: {
            PAR1: dataItem.par1,
            PAR2: dataItem.par2,
            PAR3: deviceKey,
            PAR4: dataItem.par3,
            PAR5: "5664456"
        },
        type: 'GET',
        crossDomain: true,
        dataType: 'jsonp',
        error: function () {
            showErrorDialog("Key Validation Failure");;
        }

    }).done(function (data) {

        $.each(data, function (k, v) {

           // alert("k  " + k + "  v  " + v);
            if (k == 'STATUS') {
                status = v;
            } else if (k == 'ERROR_MESSAGE') {

                errorMessageInfoText = v;
            }
        })


        if (status == 'TRUE') {
            alert("ok");
            return true;

        } else {
            return false;
        };

    });    

}

其他函数直接返回true;

顺便说一句,我收到了" ok"功能警告

5 个答案:

答案 0 :(得分:1)

您的功能不会返回任何内容。你不能进行异步调用并返回结果 - 这是异步的意思。如果你想在ajax调用完成后做一些事情,你需要给函数一个回调并调用它,而不是试图从ajax处理程序返回。

答案 1 :(得分:1)

您需要重新构建代码。 .done()内的匿名函数在functionAAA完成并返回undefined后执行。毕竟,AJAX调用是异步的。

$.ajax返回promise,因此一个选项是使用.then()

function functionAAA(){
    return $.ajax({
        url: 'http://jsfiddle.net/echo/jsonp/',
        dataType: 'jsonp',
    });
}

functionAAA().then(function() {
    alert("111111111");
    if (functionBBB()){
        alert("2222222");
        if (functionCCC()){
            alert("333333333333");
        }            
    }
});

在行动on JSFiddle中查看。

答案 2 :(得分:0)

以下脚本适合我。你能发布你的功能AAA,BBB等吗?

    <script>
    function functionAAA() {
        return true;
    }
    if(functionAAA()){
       alert("hi");
    }
    </script>

答案 3 :(得分:0)

添加此项并使您的ajax调用同步,以便等待响应,检查并相应地返回true / false。现在它不应该返回任何东西。

async: false

答案 4 :(得分:-3)

尝试...

 if (functionAAA()){
           alert("111111111");

           if (functionBBB()){
                          alert("2222222");

              else if (functionCCC()){
                              alert("333333333333");



               }            
           }
       }