我正在使用JQVMaps在WordPress网站上创建世界地图。我需要根据用户点击的区域生成页面内容。以下是我迄今为止的概念证明:
<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很新,所以我很感激能得到的任何和所有帮助。我可能会错过一个非常关键的部分。
答案 0 :(得分:1)
当你说&#34;地图没有回复时,&#34;你的意思是你的highlightRegionOfCountry和unhighlightRegionOfCountry正在工作,而且你的ajax调用不起作用了吗?你想要的是你的php脚本中$ post变量的值最终会在你的元素中结束吗?
如果是这样的话,我认为你在jQuery ajax调用中如何接收数据有点混乱。你不会通过将JavaScript代码放在javascript代码中来接收它,你会在传递给你的成功回调函数的数据中,在变量&#34; response&#34;中收到它。就像你拥有它一样。此外,您必须将单击的代码作为数据传递给ajax调用。此外,你不能只使用简单的&#34; html&#34;在dom元素上的属性,所以我会改变它。所以你的ajax调用应该改为:
$.ajax({
url: "/get_chart_data.php",
data: {
region: region
},
success: function(response) {
$("#post").html(response);
}
});
在php中引用字符串也是一种更好的做法,所以不要使用例如案例中国:,用例&#39;中国&#39;等等。