0

我正在尝试使用我的 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 代码 [带有 jQ​​uery 的 JS]:

 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 变量或其值(results[0].geometry.location.lat() 和 results[0].geometry.location.lng() 的值)传递给我的PHP 代码。所以现在我的警报中有:

Array
(
 [action] => generate_geocode
 [lat] =>
 [lng] =>
)

你能告诉我如何传递这些值吗?也许有更好的方法?:)

4

1 回答 1

0

我认为您的问题与此非常相似:

在javascript中从内部范围设置外部范围变量

geocoder.geocode 之后的代码实际上在函数响应之前运行,因此您可能希望将 jQuery.post 放在回调函数中,以确保在需要时设置变量。

于 2013-09-29T20:35:21.453 回答