【问题标题】:Javascript Function If TrueJavascript函数如果为真
【发布时间】:2014-06-16 00:52:22
【问题描述】:

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

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

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

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



           }            
       }
   }

functionAAA、functionBBB、functionCCC 返回真。我期待收到这些警报,但它们不起作用。我做错了什么?

我认为问题在于功能方面..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”警报

【问题讨论】:

标签: javascript if-statement return


【解决方案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】:

您的函数不返回任何内容。你不能进行异步调用并返回结果——这就是异步的含义。如果你想在 ajax 调用完成后做某事,你需要给函数一个回调并调用它,而不是尝试从 ajax 处理程序返回。

【讨论】:

    【解决方案3】:

    下面的脚本适合我。能否请您发布您的函数AAA、BBB 等?

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

    【讨论】:

      【解决方案4】:

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

      async: false
      

      【讨论】:

        【解决方案5】:

        试试……

         if (functionAAA()){
                   alert("111111111");
        
                   if (functionBBB()){
                                  alert("2222222");
        
                      else if (functionCCC()){
                                      alert("333333333333");
        
        
        
                       }            
                   }
               }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2017-11-16
          • 1970-01-01
          • 1970-01-01
          • 2017-04-07
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多