Я использую JQVMaps для создания карты мира на сайте WordPress. Мне нужно создать контент страницы на основе региона, на который пользователь нажал. Вот то, что я до сих пор для доказательства концепции:Динамическое содержание страницы AJAX с регионами карты
<div id="post"></div>
<script>
jQuery('#vmap').vectorMap({
map: 'world_en',
backgroundColor: '#fff',
borderColor: '#bbb',
borderOpacity: 1,
borderWidth: .2,
color: '#bbb',
onRegionOver : function (element, code, region)
{
highlightRegionOfCountry(code);
},
onRegionOut : function (element, code, region)
{
unhighlightRegionOfCountry(code);
},
onRegionClick: function(element, code, region)
{
highlightRegionOfCountry(code);
$.ajax('/get_chart_data.php', {
dataType: 'json',
success: function(response) {
var jspost = "<?php echo $post; ?>";
var el = document.getElementById("post");
el.html = jspost;
}
});
}
});
</script>
И вот что я имею в get_chart_data.php:
<?php
// Switch based on region
switch($_REQUEST['region']) {
case China:
$post = 'You clicked China';
break;
case Canada:
$post = 'You clicked Canada';
break;
case Brazil:
$post = 'You clicked Brazil';
break;
}
echo json_encode($post);
?>
Я не получаю никакого ответа от карты. Я очень новичок в AJAX, поэтому я был бы признателен за любую помощь, которую я смогу с этим справиться. Возможно, мне не хватает очень важной части.
Awesome. Я также добавил $ post = new stdClass(); вверху get_chart_data и echo json_encode ($ post); ко дну. Не уверен, что это было необходимо. –
Когда вы просто возвращаете одну строку, это не является строго необходимым. Но очень скоро вы, вероятно, столкнетесь с возвратом более сложных данных, и в таком случае да, вы захотите создать php-объект или ассоциативный массив, а затем json_encode, так что хорошо, что вы уже так идете. –