Javascript 使用AJAX在脚本中传递值
我想这只是我缺乏写剧本的经验。 我正在尝试使用AJAX和googlemaps marker从标记中获取Javascript 使用AJAX在脚本中传递值,javascript,ajax,google-maps,asp-classic,Javascript,Ajax,Google Maps,Asp Classic,我想这只是我缺乏写剧本的经验。 我正在尝试使用AJAX和googlemaps marker从标记中获取lat和long,向数据库发出请求,以便填充地图下方的表。 我似乎能够抓取lat和long,但我似乎无法将其传递到发出新请求的页面。我已经进行了测试,以确保我收到了带有警报的lat/long,并且我收到了警报 但我似乎找不到正确的语法将其传递给请求 我还在经典ASP中写作。我将非常感谢在这门语言中对我有帮助的回复,而不是建议我转向ASP.NET。我正朝着这个方向前进,但现在我就是这样做的 <
lat
和long
,向数据库发出请求,以便填充地图下方的表。我似乎能够抓取
lat
和long
,但我似乎无法将其传递到发出新请求的页面。我已经进行了测试,以确保我收到了带有警报的lat/long
,并且我收到了警报
但我似乎找不到正确的语法将其传递给请求
我还在经典ASP中写作。我将非常感谢在这门语言中对我有帮助的回复,而不是建议我转向ASP.NET。我正朝着这个方向前进,但现在我就是这样做的
<script type="text/javascript">
var j =0;
var sites = <%=overallpass%>;
function setMarkers(map, markers) {
for (var i = 0; i < markers.length; i++) {
var sites = markers[i];
var siteLatLng = new google.maps.LatLng(sites[1], sites[2]);
var theicon = sites[5];
var marker = new google.maps.Marker({
position: siteLatLng,
map: map,
title: sites[0],
zIndex: sites[3],
html: sites[4],
icon: sites[5]
});
var contentString = "Some content";
var infowindow = new google.maps.InfoWindow({
content: contentString
});
google.maps.event.addListener(marker, "click", function(event) {
loadXMLDoc(event.latLng)
});
}
}
</script>
<script>
function loadXMLDoc(location)
{
var xmlhttp;
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","demo_get2.asp?fname=Henry&lname=location.lat()",true);
xmlhttp.send();
}
</script>
var j=0;
var位点=;
函数集合标记(映射、标记){
对于(var i=0;i
在xmlhtpp.open
语句中,我试图将lat/long
传递到demo\u get2.asp
文件。在本例中,我有一段文本正确地传递到fname
。但是我正在尝试将lat
传递到lname
我也试过类似的方法
“demo_get2.asp?fname=Henry&lname=“+location.lat()但这也不起作用
作为一个附带问题。我一直在使用W3schools作为一些代码示例的源代码。(因此这里变量名的选择很糟糕。我将对此进行澄清)但在一些示例中,列出了文件,如
demo\u get2.asp
。我无法找到这些文件的位置来查看代码的确切内容。在上面的例子中,我创建了自己的文件,该文件只读取这两个值并将它们显示在页面上。它起作用了。但是对于其他例子,我感兴趣的是看看他们的例子中的实际代码是什么。我似乎找不到WQ,他们都有这些。在TryIt示例中,我也找不到它。将变量从字符串中取出,它应该是正确的;)…好吧,现在我读了你文章的其余部分…如果这也不起作用-可能是因为在对象“location”的属性“lat”的名称后面有“()” …不,我又错了:)…这是一种方法…这一行应该是有效的,您需要精确地指出代码中不起作用的内容。AJAX不发送任何内容?正在发送错误的数据/后端ASP文件接收错误的数据。。。您应该在浏览器的控制台中找到这些问题的所有答案(按f12打开它,然后加载/重新加载页面,创建新标记,并通过查看控制台的“脚本”和“网络”选项卡来检查错误) …在你的评论之后-我想我知道问题出在哪里了 尝试将您的侦听器更改为:
google.maps.event.addListener(marker, "click", loadXMLDoc));
并更改函数的开头:
function loadXMLDoc(e) {
if (!e) var e = window.event;
var locationLat = e.latLng.lat();
var locationLng = e.latLng.lng();
现在,您可以像这样构建查询字符串:
xmlhttp.open("GET","demo_get2.asp?fname=Henry&lname="+locationLat,true);
它应该可以工作了-它现在将把权限传递给您的ASP脚本。尽管使用JavaScript的基本XMLHttp请求非常好,但出于这个原因,我愿意为您提供jQuery$.ajax。难以置信的简单,直观和易于使用的经典ASP 您需要的是从提供数据的外部AJAX页面生成一个JSON对象作为响应。类似的东西(这是“demo_get2.asp”): 此页面的响应将是JSON字符串:
{ "fName": "John", "lName": "Smith" }
您的JavaScript应该是这样的:
<script src="jquery-1.9.1.min.js" type="text/javascript"></script>
<script type="text/javascript">
function loadXMLDoc(location) {
// forming an address with the parameters as query string,
// note that the query string variable names are correspondent to those
// that are read in "demo_get2.asp":
var address = "demo_get2.asp?lat=" + location.lat() + "&lng=" + location.lng();
var xhRequest = $.ajax({
url: address,
type: "GET",
data: null, // you can also pass the input as a JSON string instead
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (jsonResult) {
return jsonResult;
// This is the JSON object formed by the response of
// demo_get2.asp
},
error: function (error) {
alert("Something bad just happened: " + error);
}
});
}
</script>
希望有帮助。我将代码行改为xmlhttp.open(“GET”、“demo\u get2.asp?fname=Henry&lname=“+location.lat,true”);结果输出是Henry function(){return this[a]},所以我认为这不太正确。在我给出的原始示例中,结果是myDiv元素的输出看起来像Henry location.lat(),我尝试了您的示例并向您展示了输出。元素myDiv已经超出了Henry function(){return this[a]}我有点期待像Henry 43.2134534这样的东西你没有注意到我的编辑-我在上面的答案中添加了一些行。我自己检查了代码,它确实有效——你应该得到你所期望的。
{ "fName": "John", "lName": "Smith" }
<script src="jquery-1.9.1.min.js" type="text/javascript"></script>
<script type="text/javascript">
function loadXMLDoc(location) {
// forming an address with the parameters as query string,
// note that the query string variable names are correspondent to those
// that are read in "demo_get2.asp":
var address = "demo_get2.asp?lat=" + location.lat() + "&lng=" + location.lng();
var xhRequest = $.ajax({
url: address,
type: "GET",
data: null, // you can also pass the input as a JSON string instead
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (jsonResult) {
return jsonResult;
// This is the JSON object formed by the response of
// demo_get2.asp
},
error: function (error) {
alert("Something bad just happened: " + error);
}
});
}
</script>
var firstNameString = jsonResult.fName;
var lastNameString = jsonResult.lName;