我遇到了将变量发布到 php 脚本并在没有刷新页面的情况下返回结果的问题。 php 脚本koord.php
已经过测试,工作正常。
adresa
,mjest
o和coords
是文本输入框):$(document).ready(function () {
$('#coord_click').click(function () {
provjera();
});
});
function provjera() {
var adresa = $('#adresa').val();
var mjesto = $('#mjesto').val();
var puna_adresa = adresa + " " + mjesto;
$.post("koord.php", { puna_adresa: puna_adresa },function (result) {
$('#coords').val(result);
});
}
$puna_adresa = $_GET['puna_adresa'];
function getCoordinates($address){
$address = str_replace(" ", "+", $address);
$url = "maps.google.com/maps/api/geocode/…";
$response = file_get_contents($url);
$json = json_decode($response,TRUE);
return ($json['results'][0]['geometry']['location']['lat'].",".$json['results'][0]['geometry']['location']['lng']);
}
echo getCoordinates($puna_adresa);
完整的源代码在此处:http://pastebin.com/u/bradetic
谢谢!
答案 0 :(得分:1)
你真的需要使用Jquery AJAX,这是一个例子:
<script>
function your_function()
{
// collect data like this
var formData = jQuery("#your_form_id").serializeArray();
jQuery.ajax({
type: "POST",
url:"your_php_page.php",
data:formData,
dataType:'json',
beforeSend: function()
{
},
success: function(resp)
{
alert(resp);
},
complete: function()
{
},
error: function(e)
{
alert('Error: ' + e);
}
});
}
</script>
你的PHP脚本应该是这样的:
$puna_adresa=$_POST['puna_adresa'];
function getCoordinates($address){
$address = str_replace(" ", "+", $address);
$url = "maps.google.com/maps/api/geocode/…;;
$response = file_get_contents($url);
return $response;
}
$response = getCoordinates($puna_adresa);
echo json_encode($response);
答案 1 :(得分:1)
Jquery POST不是问题。
您正在进行$.post(...)
,这意味着您需要通过koord.php
在$_POST
中获取参数,并且您使用的是$_GET
,您认为问题正确吗? / p>
将$_GET['puna_adresa'];
更改为$_POST['puna_adresa'];
或强>
在您的客户端更改$.post(...)
的{{1}}。
$.get(...)
和POST
之间的区别对吗?答案 2 :(得分:0)
你能试试吗,
$.post("koord.php", { puna_adresa: adresa, mjesto: mjesto }, function (result) {
$('#coords').val(result);
});
另一种方式:
$.post("koord.php", $( "#testform" ).serialize(), function (result) {
$('#coords').val(result);
});
答案 3 :(得分:0)
你可以试试这个
$.post( "koord.php", $( "#testform" ).serialize() );