2012-12-20 50 views
1

使用fourquare api获取场地,之前有一个可点击的列表从api书写出来,但将其缩小为仅写入屏幕的一个场地名称。然后决定最好把它发送到php。所以当我做了我认为合乎逻辑的代码切割时,它完全停止了工作。javascript api简化了

我的程序有这个,工作:

$(document).ready(function doEverything(element) { 
    $.getJSON("https://api.foursquare.com/v2/venues/search?ll=" + lat + "," + lng + "&client_id=L2VWBKPOW45D5X3FJ3P4MJB5TGVJ4ST2J005RIVAFIWG44ND%20&client_secret=ZKDAOLHASCA31VUOGMBTAS3RFYUOMXL4IFFYPRURIDQA3QMA%20&v=20111107", function(data) { 
     one = data.response.venues[0].name; 
     var list = []; 
     list[0] = [one]; 

     function Make() { 
      for (var i = 0; i < 1; i++) { 
       var div = document.createElement("div"); 
       div.style.margin = "-435px 100px 0px 110px"; 
       div.innerHTML = list[i]; 
       ! 
       function() { 
        var index = 0; 
        div.onclick = function() { 
         doSomething(this); 
        }; 
       }(); 
       document.body.appendChild(div); 
      } 
     } 

     function doSomething(element) { 
      var value = element.innerHTML; 
      switch (value) { 
      case one: 
       break; 
      } 
     } 
     Make(); 
    }); 
}); 

于是我决定以此来传递一个变量到PHP:

theVar = 10; //just to make things simple. 
urlString = "cookiestesttwo.php?var=" +theVar; 
window.location = urlString; 

于是,我就简化了我的API代码,此和它停止工作:

$(document).ready() { 
    $.getJSON("https://api.foursquare.com/v2/venues/search?ll=" + lat + "," + lng + "&client_id=L2VWBKPOW45D5X3FJ3P4MJB5TGVJ4ST2J005RIVAFIWG44ND%20&client_secret=ZKDAOLHASCA31VUOGMBTAS3RFYUOMXL4IFFYPRURIDQA3QMA%20&v=20111107", function(data) { 
     one = data.response.venues[0].name; 
     document.write(one) 
     theVar = one 
     urlString = "cookiestesttwo.php?var=" + theVar; 
     window.location = urlString;) 
    }; 
};​ 
+0

你的意思是“停止工作”是什么意思? –

+2

你有没有打扰你的浏览器的JavaScript控制台的任何错误?你的一个版本,你在''10'硬编码'theVar',工作吗?另外,为什么在'$ .getJSON'中使用'document.write'? – Ian

+0

错误是HTTP/1.1 400错误请求和未知属性“框大小”。 – Celeste

回答

2

你的问题可能是你使用document.write()当次e DOM已经完成。你不应该那样做。创建一个元素document.createElement("div")并设置innerText(),然后将其附加到dom。就像你在重构之前做的一样。

编辑

我明白,这不是document.write()但是就是澄清一下我说的是我写了一个小重构。由于这是多余的,我也抛出了theVar = one。还要确保在正确的范围内声明你的变量。因此我在one前加了一个var

$(document).ready(function() { 
    $.getJSON("https://api.foursquare.com/v2/venues/search?ll="+lat+","+lng+"&client_id=L2VWBKPOW45D5X3FJ3P4MJB5TGVJ4ST2J005RIVAFIWG44ND%20&client_secret=ZKDAOLHASCA31VUOGMBTAS3RFYUOMXL4IFFYPRURIDQA3QMA%20&v=20111107", 

    function(data){ 
     var one = data.response.venues[0].name; 

     var div = document.createElement("div"); 
     div.innerText(one); 
     document.appendChild(div); 

     window.location = "cookiestesttwo.php?var=" + one; 
    }); 
    }); 

但是,如果你改变窗口的位置。无论如何,document.write()没有任何意义,或者自离开网站后追加新的div。

+0

这不是documente.write。根据你的其他建议,我不知道该怎么做。 – Celeste

+0

我明白了 - 我仍然编辑我的答案,让你知道我在想什么。 – Mathias

+0

另外我刚刚看到你有一个语法错误。当你关闭你的函数时,它需要'});'而不是')};' - 我在我的EDIT – Mathias

2

$(document).ready() {是不正确的语法,并抛出错误。

此外,函数结尾还有另一个语法错误。你反过来了)和)

$(document).ready(function() { 
    $.getJSON("https://api.foursquare.com/v2/venues/search?ll=" + lat + "," + lng + "&client_id=L2VWBKPOW45D5X3FJ3P4MJB5TGVJ4ST2J005RIVAFIWG44ND%20&client_secret=ZKDAOLHASCA31VUOGMBTAS3RFYUOMXL4IFFYPRURIDQA3QMA%20&v=20111107", function(data) { 
     one = data.response.venues[0].name; // if one is local to this function then use VAR otherwise you'll leak it globally. 
     document.write(one); 
     theVar = one; // same here for the VAR keyword. 
     urlString = "cookiestesttwo.php?var=" + theVar; // and here as well. NO GLOBAL LEAKS! 
     window.location = urlString; 
    }); 
}); 

我在评论中提出了几个提示。