Javascript 使用AJAX在脚本中传递值

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。我正朝着这个方向前进,但现在我就是这样做的 <

我想这只是我缺乏写剧本的经验。 我正在尝试使用AJAXgooglemaps marker从标记中获取
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;