我正在尝试使用我的wp-admin插件从Google Maps Api运行Geocode。我有自己的帖子类型,其中输入地方的地址,jQuery代码观看点击div。
这就是我的代码:
插件代码[PHP]:
add_action( 'wp_ajax_generate_geocode', array($this, 'generate_geocode') );
[...]
//here is my test function that is waiting for response and doing something.
public function generate_geocode() {
print_r($_POST);
die();
}
AJAX代码[JS with jQuery]:
jQuery(document).ready(function() {
var lat = '';
var lng = '';
jQuery('#generate-geocode').on('click', function() {
var address = jQuery('#address').val();
// alert(address);
var geocoder = new google.maps.Geocoder();
geocoder.geocode({address: address}, function(results, status) {
//alert(status);
if (status == google.maps.GeocoderStatus.OK) {
lat = results[0].geometry.location.lat();
lng = results[0].geometry.location.lng();
alert(lat + ' ' + lng);
}
});
data = {
action: 'generate_geocode',
lat: lat,
lng: lng
};
jQuery.post(ajaxurl, data, function(response) {
alert(response);
});
});
});
我的问题是我不知道如何传递lat和lng变量或它的值(结果值[0] .geometry.location.lat()和结果[0] .geometry.location.lng() )到我的PHP代码。所以现在我有警觉:
Array
(
[action] => generate_geocode
[lat] =>
[lng] =>
)
你能告诉我如何传递这些价值观吗?也许有更好的方法? :)
答案 0 :(得分:0)
我认为您的问题非常类似于此问题:
set outer scoped variable from inner scope in javascript
geocoder.geocode在函数响应之前实际运行之后的代码,因此您可能希望将jQuery.post放在回调函数中以确保在需要时设置变量。