【问题标题】:javascript api simplifiedjavascript api 简化
【发布时间】:2012-12-20 20:43:27
【问题描述】:

使用fourquare 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;)
    };
};​

【问题讨论】:

  • “它停止工作”具体是什么意思?
  • 您是否费心查看浏览器的 Javascript 控制台是否有任何错误?您在10 中为theVar 硬编码的版本是否有效?另外,你为什么在$.getJSON 中使用document.write
  • 错误是 HTTP/1.1 400 Bad Request 和未知属性 'box-sizing'。
  • 请了解如何格式化您的代码(SO 内部和外部)。
  • 在格式化代码(缩进)时,第二个 sn-p 格式错误。 }) 被颠倒是错字吗?还是在您的代码中? $(document).ready() { 的语法也不正确,确实会抛出错误。

标签: javascript api document-ready


【解决方案1】:

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

我在 cmets 中提供了更多提示。

【讨论】:

    【解决方案2】:

    您的问题可能是在 DOM 已经完成时使用 document.write()。你不应该那样做。创建一个元素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 没有意义,因为你还是离开了网站。

    【讨论】:

    • 这不是 documente.write。根据您的其他建议,我不知道该怎么做。
    • 我明白了 - 我仍然编辑了我的答案,让你知道我的想法。
    • 另外我刚刚看到你有一个语法错误。当你关闭你的函数时,它需要是 }); 而不是 )}; - 我在我的编辑中更正了它
    • $(document).ready() { 语法不正确,会引发错误。
    • @rlemon:对!谢谢 - 这就是我得到的复制粘贴。 :)
    猜你喜欢
    • 1970-01-01
    • 2020-08-29
    • 2016-06-30
    • 1970-01-01
    • 2021-11-28
    • 2014-09-20
    • 1970-01-01
    • 1970-01-01
    • 2012-08-14
    相关资源
    最近更新 更多