Ja, das, was Sie versuchen zu erreichen, ist möglich, obwohl eine synchrone Anfrage nicht erforderlich ist.
Sehen Sie sich diesen Code an
function StoreGeo()
{
var address = $('input[name=zipcode]').val() + ', ' + $('input[name=city]').val();
geocoder.geocode( { 'address': address}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
var ll = results[0].geometry.location.toString();
llarr = ll.replace(/[\(\) ]/g, '').split(',');
for(i = 0; i < llarr.length;i++)
{
$('#form').append($('<input type="hidden" name="'+(i == 0 ? 'lat' : 'long')+'">').val(llarr[i]));
}
$('#form').submit();
}
else
{
alert(status);
}
});
$('#form').unbind('submit');
return false;
}
$(document).ready(function () {
//init maps
geocoder = new google.maps.Geocoder();
$('#form').bind('submit',function() {
StoreGeo();
});
});
Fügen Sie also dem Formular einen Submit-Handler hinzu. Wenn es abgeschickt wird, wird die Geo-Anfrage auf der Grundlage der Adressdaten aus Ihrem Formular ausgeführt. Aber zur gleichen Zeit verschieben Sie die Übermittlung durch Rückgabe false in der Handler. Der Response-Handler erstellt 2 versteckte Textfelder 'lat' und 'long' und speichert die Antwort. Schließlich wird das Formular vom Client-Skript abgeschickt, einschließlich der beiden neuen Felder. Auf der Serverseite können Sie sie in der DB speichern.
!! Beachten Sie, dass dies möglich ist, aber wahrscheinlich gegen die Google-Bedingungen verstößt, wie oben erwähnt.