2012-03-26 58 views
1

我正在製作PhoneGap的網絡應用程序。這是我目前的障礙:將JavaScript變量傳遞到下一頁而沒有服務器端干擾?

在一個頁面上,用戶選擇緯度和經度,然後點擊繼續。在下一頁上,通過對錶單和JavaScript URL解析器執行一些很好的GET操作,下一頁傳遞lat和lng座標。在這個新頁面上,用戶被要求輸入一個半徑。通過同樣的方法,半徑被傳遞到最終頁面,該頁面顯示一個由座標和半徑組成的圓形的谷歌地圖。

但問題是,當我通過半徑到最後一頁時,顯然只有通過半徑。我怎麼能從第二頁向前傳遞lat和lng,這不是表單信息的一部分?他們已經建立。我知道明顯的解決方案是將所有三個變量放在一個頁面上,但由於我無法控制的愚蠢的原因,它需要這樣。

所以問題表示:你怎麼通過存在在javascript中的變量到下一個頁面的信息?它不是表格的一部分。只是一個變量。

+0

它添加到形式,如'' – zzzzBov 2012-03-26 02:16:38

+0

我該如何使用javascript來填寫值?是它document.getelementbyid(hiddenInputThingy).value =變量? – Aerovistae 2012-03-26 02:18:42

+0

是的,它會這樣做。或者因爲您說過它的GET請求,您也可以將這些值附加到URL中。 – Deepu 2012-03-26 02:22:41

回答

1

所有你需要做的就是添加一些隱藏的輸入元素的形式(<input type="hidden" />)。

這可以通過很多方式完成。最短的是使用一個庫(例如代碼恰好是jQuery的):

$('<input type="hidden" name="lat" />').val(latitudeValue).appendTo(formSelector); 
$('<input type="hidden" name="lng" />').val(longitudeValue).appendTo(formSelector); 

生JS是多一點的時間,但不特別複雜:

//I haven't checked this, so some cross-browser tweaking might be necessary 
var lat, 
    lng, 
    form; 
lat = document.createElement('input'); 
lat.type = 'hidden'; 
lat.value = latitudeValue; 
lng = document.createElement('input'); 
lng.type = 'hidden'; 
lng.value = longitudeValue; 
form = document.querySelector(formSelector); 
form.appendChild(lat); 
form.appendChild(lng); 

latitudeValuelongitudeValue,並formSelector是變量你必須在你的頁面上下文中定義。您也可以使用不同的參數名稱,例如name="longitude"


這聽起來像你真的應該使用AJAX來改變頁面的內容,讓你賺不到連續的GET請求。相反,您可以根據用戶所處的進程中的哪一步簡單地交換頁面的主要內容。它將刪除任何URL解析的必要性(這很容易做錯)。

+0

我同意最後一部分,但我是一個初學者,有網絡開發,現在學習AJAX已經超出我的時間限制。我甚至不知道AJAX是否適用於PhoneGap。儘管我已經聽到了很多有趣的話。 – Aerovistae 2012-03-26 02:34:33

0

您可以通過Javascript訪問獲取數據。因此,只需將您的數據傳遞到下一頁即可獲取URL中的數據,並使用Javascript對其進行解析。

如果您的網址包含?foo=1&bar=2末,你可以解析f​​oo和與

var parts = window.location.search.substr(1).split("&"); 
var $_GET = {}; 
for (var i = 0; i < parts.length; i++) { 
    var temp = parts[i].split("="); 
    $_GET[decodeURIComponent(temp[0])] = decodeURIComponent(temp[1]); 
} 

alert($_GET['foo']); // 1 
alert($_GET.bar); // 2 
0

更容易的選擇欄將使用JavaScript創建/ jQuery的餅乾和值添加到它。因此,您可以在每個頁面上添加所有值,然後從cookie中最終檢索所需的數據。 你不使用服務器端腳本,但你得到所有你需要的值。

相關問題