2012-03-26 79 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中最终检索所需的数据。 你不使用服务器端脚本,但你得到所有你需要的值。

相关问题