2013-09-29 80 views
0

我試圖用我的wp-admin插件從Google Maps Api運行Geocode。我有我自己的帖子類型,其中輸入地點的地址,和jQuery代碼觀看點擊div。 所以這是我的代碼:
插件代碼[PHP]:如何將.post響應中的變量值傳遞給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與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變量或它的值(result [0] .geometry.location.lat()的值和results [0] .geometry.location.lng())的值傳遞給我的PHP代碼。因此,現在我有我的警報:

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

你能告訴我如何通過該值?也許有更好的辦法? :)

+1

地理編碼器是異步的。 – adeneo

+0

謝謝,我忘了:) – Kulfon

回答

0

我認爲你的問題很類似這樣的:

set outer scoped variable from inner scope in javascript

代碼之後geocoder.geocode實際運行的功能響應之前,所以你可能會想要把你回調函數中的jQuery.post以確保在需要時設置變量。

+0

是的,你是對的。 :)我把代碼放入回調,一切都OK了:) – Kulfon