Javascript将函数分配给多个vars

时间:2014-07-30 07:00:19

标签: javascript jquery

我有这段代码:

var httpPage = new XMLHttpRequest();

function getContent(url){
  if($(".bd").css("height").replace("px", "") < $(window).height())
    $("#td_1").css("height", ($(window).height() - 167)+"px");
  httpPage.open("GET", "js_api.php?key="+(readCookie("user") || $("input[name='key']").val())+url, true);
  httpPage.send(null);
}

httpPage.onload = function(){
  //DO THINGS
}

现在,此代码适用于单个请求。但是如果我发送2个请求(调用该函数两次,但具有不同的url),则第一个请求不会执行第二个请求覆盖它的httpPage.onload = function()原因。我该如何解决?

1 个答案:

答案 0 :(得分:2)

重新安排事情,以便每次调用你的函数都有自己的本地变量:

function getContent(url){
  var httpPage = new XMLHttpRequest();
  if($(".bd").css("height").replace("px", "") < $(window).height())
    $("#td_1").css("height", ($(window).height() - 167)+"px");
  httpPage.open("GET", "js_api.php?key="+(readCookie("user") || $("input[name='key']").val())+url, true);
  httpPage.send(null);

  httpPage.onload = function(){
    //DO THINGS
  }
}

然后这是一个更新的函数,它将起作用,传递一个函数

function getContent(url, onload){
  var httpPage = new XMLHttpRequest();
  if($(".bd").css("height").replace("px", "") < $(window).height())
    $("#td_1").css("height", ($(window).height() - 167)+"px");
  httpPage.open("GET", "js_api.php?key="+(readCookie("user") || $("input[name='key']").val())+url, true);
  httpPage.send(null);

  httpPage.onload = onload
}

function getContent("http://invalid.com", function(data) {
  alert("DO THINGS with" + data);
});