无法捕获返回值jQuery

时间:2014-06-16 13:42:15

标签: javascript jquery

我正在尝试将JavaScript文件在运行时嵌入到本地文件的后备功能中。并且在捕获返回值时遇到问题。

当我在两个函数之间返回值true或false时,第二个函数将其捕获为null

var script_list = new Array();

script_list.push(
['//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js', 'lib/jquery-2.1.1.min.js'], ['//maxcdn.bootstrapcdn.com/bootstrap/3.1.1/js/bootrap.min.js', 'lib/bootstrap.min.js']);



function getSrc() {

  for (var i = 0; i <= urls.length - 1; i++) {
    var url = window.script_list[i];

    if (i === urls.length - 1) {
      url = base_dir + '/' + url;
      return url;
    }

    alert('catched value: ' + checkCdn(url));   //here catching

    if (checkCdn(url) === true) {
      return url;
    }

  }
}



function checkCdn(url) {

  $.ajax({
    type: "HEAD",
    url: url,
    crossDomain: true,
    timeout: 3000,
    complete: function(e) {
      if (e.status === 200) {
        alert('returned value: true');
        return true;   //here returning

      } else {
        alert('returned value: false');
        return false;  //here returning
      }
    }
  });
}

请参阅http://plnkr.co/edit/pLqOyNg62LeUzrkrzHko以获取完整代码。

我尝试初始化局部变量,为其赋值true或false并返回变量值。但即便如此也不起作用......

现在我已经更改了代码“使用延迟对象/承诺”,因为问题here的已接受答案仍然是jQuery声明本身的错误。

function getSrc(urls) {

    for (var i = 0; i <= urls.length - 1; i++) {
        var url = urls[i];

        if (i === urls.length - 1) {
            url = base_dir + '/' + url;
            return url;
        }

        alert('catched value: '+checkCdn(url));

        if (checkCdn(url)=== true) {
            return url;
            break;
        }

    }
}


function checkCdn(url) {      
    return $.ajax({
        type: "HEAD",
        url: url,
        crossDomain: true
      //  timeout:3000        
    });
}


checkCdn().done(function(r) {
    if (r) {
        alert ('returned value: true');
                return true;
    } else {
        alert ('returned value: false');
                return false;
    }
})
      .fail(function(x) {            
        alert ('returned value: '+x.status);
                return false;
        });

请参阅完整的新代码here ..

0 个答案:

没有答案