2013-09-29 2 views
0

Я пытаюсь запустить Geocode из Google Maps Api с помощью моего плагина wp-admin. У меня есть свой собственный тип сообщения, в котором вводится адрес места, а код jQuery - просмотр щелчка на div. Так вот мой код:
Plugin код [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 Code [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 или его значений (значение результатов [0] .geometry.location.lat() и результатов [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

Да, вы правы. :) Я поместил код в обратный вызов, и все в порядке :) – Kulfon

Смежные вопросы