javascript api简化了

时间:2012-12-20 20:43:27

标签: javascript api document-ready

使用四角形api来获取场地,之前有一个从api写出的可点击列表,但将其缩减为仅写入屏幕的一个场地名称。然后决定最好把它发送到php。因此,当我做了我认为是逻辑切割代码时,它完全停止了工作。

我的程序有这个,工作:

$(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;)
    };
};​

2 个答案:

答案 0 :(得分:2)

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

修改

我明白这不是document.write(),而只是澄清我在说什么我写了一个小重构。我也抛弃了theVar = one因为那是多余的。还要确保在正确的范围内声明变量。因此,我在var前面添加了one

$(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。

答案 1 :(得分: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;
    });
});

我在评论中提出了一些提示。