将自动填充文本字段的内容发送到php文件,以便使用JQuery进行处理,并返回结果
我有一个地图,点击时,纬度和逻辑度填充表单中的一些隐藏文本字段。我想做的是对这些坐标进行一些计算(找到最近的城镇),用城镇名称填充表单中的“Townland”字段,然后单击submit提交所有内容 我一直试图通过使用ajax将lat和lng字段的内容发送到进行处理的php文件来实现这一点,但我无法让它工作。当我手动输入纬度和逻辑纬度,而不是试图从另一个文件中提取纬度和逻辑纬度时,sql查询就会起作用 任何帮助都会很好,谢谢 我的php表单页面中的javascript调用执行计算的php文件将自动填充文本字段的内容发送到php文件,以便使用JQuery进行处理,并返回结果,php,jquery,mysql,Php,Jquery,Mysql,我有一个地图,点击时,纬度和逻辑度填充表单中的一些隐藏文本字段。我想做的是对这些坐标进行一些计算(找到最近的城镇),用城镇名称填充表单中的“Townland”字段,然后单击submit提交所有内容 我一直试图通过使用ajax将lat和lng字段的内容发送到进行处理的php文件来实现这一点,但我无法让它工作。当我手动输入纬度和逻辑纬度,而不是试图从另一个文件中提取纬度和逻辑纬度时,sql查询就会起作用 任何帮助都会很好,谢谢 我的php表单页面中的javascript调用执行计算的php文件 &l
<script type="text/javascript">
$('lat').change(function(){
var lat=document.getElementById('lat').value;
var lng=document.getElementById('lng').value;
$.ajax
({
url: '../Controller/PRACTICEtown.php',
data: { var : lat, var : lng},
type: 'post',
success: function(result)
{
$('#Townland').value(result);
}
});
});
</script>
$('lat').change(函数(){
var lat=document.getElementById('lat').value;
var lng=document.getElementById('lng')。值;
$.ajax
({
url:“../Controller/PRACTICEtown.php”,
数据:{var:lat,var:lng},
键入:“post”,
成功:功能(结果)
{
$(#Townland')。价值(结果);
}
});
});
外部php文件,我想从上面获取lat和lng并对其执行计算,返回城镇名称
<?php
function getTown(){
$conn = Connect();
/**
* Use the Haversine Formula to display the 100 closest matches to $origLat, $origLon
* Only search the MySQL table $tableName for matches within a 10 mile ($dist) radius.
*/
$origLat = $_POST['lat'];
$origLon = $_POST['lng'];
$dist = 50; // This is the maximum distance (in miles) away from $origLat, $origLon in which to search
$query = "SELECT Townland, lat, lng, 3956 * 2 *
ASIN(SQRT( POWER(SIN(($origLat - lat)*pi()/180/2),2)
+COS($origLat*pi()/180 )*COS(lat*pi()/180)
*POWER(SIN(($origLon-lng)*pi()/180/2),2)))
as distance FROM townland WHERE
lng between ($origLon-$dist/cos(radians($origLat))*69)
and ($origLon+$dist/cos(radians($origLat))*69)
and lat between ($origLat-($dist/69))
and ($origLat+($dist/69))
having distance < $dist ORDER BY distance limit 1";
$result = mysqli_query($conn, $query) or die(mysql_error());
if($row = mysqli_fetch_assoc($result)) {
echo $row['Townland'] ;
}
}
getTown();
?>
$('lat').change(函数(){
var lat=document.getElementById('lat').value;
var lng=document.getElementById('lng')。值;
$.ajax
({
url:“../Controller/PRACTICEtown.php”,
数据:{lat:lat,lng:lng},
键入:“post”,
成功:功能(结果)
{
$(#Townland')。价值(结果);
}
});
});
注意ajax数据字段
$('lat').change(函数(){
var lat=document.getElementById('lat').value;
var lng=document.getElementById('lng')。值;
$.ajax
({
url:“../Controller/PRACTICEtown.php”,
数据:{lat:lat,lng:lng},
键入:“post”,
成功:功能(结果)
{
$(#Townland')。价值(结果);
}
});
});
注意ajax数据字段,而不是
data: { var : lat, var : lng},
使用
编辑:在您对自己问题的评论中,您说您的townland输入的id是“townland”,但在ajax成功函数中,您希望更改“townland”(大写!)的值,而不是
data: { var : lat, var : lng},
使用
编辑:在您对自己问题的评论中,您说您的townland输入的id是“townland”,但在ajax成功函数中,您希望更改两次发送的
var
数据中“townland”(大写!)的值。使用其他名称,每个值使用不同的名称。与您在代码中使用的$_POST匹配的名称结果应显示在主窗体的“Townland”文本字段中。我目前的设置如下:在数据中,您将发送两次var
。使用其他名称,每个值使用不同的名称。与您在代码中使用的$_POST匹配的名称结果应显示在主窗体的“Townland”文本字段中。我目前的做法是这样的:您是否尝试过在ajax成功函数中警告结果,以查看ajax是否至少返回所需的结果?正如我在20分钟前的评论中所看到的,您的townland输入的id为“townland”,但在ajax成功函数中,您希望更改id为“townland”的输入值(大写)像这样的警报?警报(结果);我把它放进去了,但什么也没发生。我把它改成小写,但什么也没发生。我想我得试着找到一种不同的方法来做。如果警报(结果);从不触发它表示ajax请求或php脚本出现问题。请尝试向ajax中添加错误函数并警告抛出的错误。错误:函数(jqXHR,textStatus,errorhorn){alert(errorhorn);}您是否尝试在ajax成功函数中警告结果,以查看ajax是否至少返回所需的结果?正如我在20分钟前的评论中所看到的,您的townland输入的id为“townland”,但在ajax成功函数中,您希望更改id为“townland”的输入值(大写)类似于此的警告?警报(结果);我把它放进去了,但什么也没发生。我也把它改成小写,但什么也没发生。我想我只需要尝试找到一种不同的方法来做。如果警报(结果);从未触发,这意味着ajax请求或php脚本有问题。尝试向ajax添加一个错误函数,并警告抛出的错误。错误:函数(jqXHR,textStatus,errorhorn){alert(errorhorn);}
data: { lat : lat, lng : lng},