我正在加载地图并将数据库中的标记添加到画布。当我第一次加载页面时,调用函数“load()”,我知道输入'form'为null,因为我有一个表格形式为null的警报。当我在表单字段中按“搜索”时,调用“加载”函数,我知道表单!= null,因为我有一个不同的警报。然而,在我按'ok'查看不同的警报之后,我可以看到使用form = null再次调用load,因为弹出相应的警报。
这是头部加载函数的开始:
//Edit (adding more information for clarity)
//<![CDATA[
var map;
function load(form) {
if (form != null) {
alert("Form not null!");
} else {
alert("Form is null :-(");
}
var myOptions = {
center: new google.maps.LatLng(42, -70),
zoom: 3,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
map = new google.maps.Map(document.getElementById("map"),myOptions);
// rest is edited out
}
function addMarkers() {
//************MAP WILL NOT GENERATE WITH THIS SECTION OR ADD MARKERS*************
microAjax("genjsonphp.php?stdt="+costlow+"&enddt="+costhigh, function(data) {
var json = JSON.parse(data);
var points = json;
for (var i = 0; i<points.length; i++)
{
var point = points[i];
var latlng = new google.maps.LatLng(parseFloat(point.LocationLat)/1000000,parseFloat(point.LocationLon)/1000000);
var marker = createMarker(point.House,
point.Place,
point.Cost,
latlng,
map);
}
});
//************************************************************************************
}
function createMarker(House, Place, Cost, latlng, mapsent)
{
var marker = new google.maps.Marker({
position: latlng,
map: mapsent,
title: House
});
marker.info = new google.maps.InfoWindow({
content: House + '<br />' + Place + '<br />' + Cost
});
google.maps.event.addListener(marker, 'click', function(){
marker.info.open(mapsent, marker);
});
return marker;
}
//]]>
以下是加载地图并缩小搜索条件的字段:
<TABLE BORDER="0" CELLSPACING="0" CELLPADDING="2" ALIGN="Center" WIDTH=80%>
<body onload="load()" onunload="GUnload()">
<TR>
<TD>
<div id="map" style="width: 1250px; height: 750px"></div>
</TD>
<TD>
<form method="post">
<input type="text" name="search_criteria" id="search_criteria" />
<!--button to modify search criteria-->
<button type="submit" id="narrow_search_form" name="narrow_search_form" onClick = "addMarkers()">Search</button>
</form>
</body>
</TD>
</TR>
</TABLE>
如何修复我的代码,以便在按下搜索按钮时调用load函数一次,并将表单中的信息传递给加载函数?
答案 0 :(得分:1)
好。我决定写一个答案,因为我开始创建太多评论。
Working example&lt;&lt; - 使用那一个,而不是评论一个。来自评论的Cuz是我的本地人,忘记将其上传到某个地方,一旦我关闭PC就会消失。
根据您放入搜索框的内容,您只能获得包含 - 以某种方式 - 搜索的字词/单词的标记。 尝试将“波兰”或“高速公路”
该部分是用PHP制作的:
if($_POST['search_criteria'] == "" || !isset($_POST['search_criteria'])) $result = mysql_query("SELECT lat, lng, search_crit, something_else from markers");
else $result = mysql_query("SELECT lat, lng, search_crit, something_else from markers where search_crit = '$_POST[search_criteria]'");
因此,如果您在搜索框中放置任何内容,则会搜索并从数据库中获取标记,其中“search_crit”列与写入搜索框中的单词相同。这就是一切。如果需要,可以将其作为变量传递给加载:
load('<? echo $_POST["search_criteria"]; ?>')
然后将其用作函数,作为用于比较标记的参数。正如我所说,我需要你的加载功能,知道你是如何创建标记,并比较它们。
此外,我会从onclick at按钮删除 load(this.form)
,因为无论如何,它都会立即显示页面重新加载。按下后,提交按钮将提交/重新加载页面。
如果您想将其用于检查目的,传递其他功能而不是整个表单。只是文本框值,例如。 Like here!(已将按钮更改为不提交一个,用于显示目的)
有什么不清楚的吗?想要整个文件/源代码?请在下面评论,ima更新答案。
源文件,保存为* .txt,以便您可以看到实际代码:Source code (在连接mysql数据库时更改了登录名和密码,因此我不会向全世界显示它。)