我有一个SQL数据库,其中包含固定的纬度和经度(lat、lng)值。现在我想要实现以下功能:当我在搜索框中输入城市名称并单击时,它会通过POST方式将数据发送到php文件,并进行SQL查询以返回lat、lng数据。我想要调用JavaScript函数来加载地图,并从PHP文件获取lat、lng参数。我希望所有这些都在简单的onClick事件中发生。
以下是我的JavaScript函数,用于初始化地图(load()函数):
问题在于JavaScript函数
以下是我的JavaScript函数,用于初始化地图(load()函数):
function getFile() {
if (window.XMLHttpRequest) {
AJAX=new XMLHttpRequest();
} else {
AJAX=new ActiveXObject("Microsoft.XMLHTTP");
}
if (AJAX) {
var searchField = document.getElementById("searchField");
AJAX.open("POST", "gmap.php", false);
AJAX.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
AJAX.setRequestHeader("Content-length", searchField.value.length);
AJAX.setRequestHeader("Connection", "close");
AJAX.send("foo=" + searchField.value);
return load(AJAX.responseText);
} else {
return false;
}
}
这是我的gmap.php文件:
<?php
header( 'Content-Type: text/html; charset=UTF-8' );
mb_internal_encoding( 'UTF-8' );
$a = $_POST['searchField'];
$dbhost = "localhost";
$dbuser = "*******";
$dbpass = "*******";
$dbname = "citydb";
//connect sql
mysql_connect($dbhost, $dbuser, $dbpass);
//select db
mysql_select_db($dbname) or die(mysql_error());
//retrieve data
//$city=$_GET['city'];
//escape user input to help prevent SQL injection
//$city=mysql_real_escape_string($city);
//query
mysql_query('SET CHARACTER SET utf8');
$result=mysql_query("SELECT citystart, cityend FROM cityids WHERE city='$a' ");
if(!result) {
die("Database query failed: " . myql_error());
}
while($row=mysql_fetch_array($result)) {
$lat=$row['citystart'];
$lng=$row['cityend'];
这是 onClick 的调用:
<input type="submit" class="regular" name="FindEv" value="FindEv" onClick="getFile(); return false;" />
问题在于JavaScript函数
load()
在PHP数据返回之前被调用。我已经花了一周的时间来解决这个问题,但是我找不到解决方案。我尝试过使用eval()
,也尝试从PHP中调用load()
函数,但失败了,因为它在一个onClick事件内部,该事件在一个div内部,所以load()
函数不会执行,只会在div内部显示,当我在Firebug中检查元素时。我谈论的是GLatLng()的lat、lng值。