2012-12-20 133 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; 
    }); 
}); 

我在評論中提出了幾個提示。