我一直在寻找可行的答案,但一直找不到。 我有一张用于 RP 公会的游戏地图。我正在使用地图来显示我们在该游戏世界中的影响力。如果我在 php 中的 echo 语句中完成了所有操作,则显示地图没有问题,但是,我想要做的只是将影响区域绘制在从数据库中提取的地图上。
我有以下函数,当从我的 .js 文件中调用时它可以工作:
function drawInfluence(id,x,y,inf,dis) {
svg = document.getElementById("small_map");
var pt = svg.createSVGPoint();
pt.x = x;
pt.y = y;
var c = document.createElementNS('http://www.w3.org/2000/svg','circle');
c.setattribute('id',"c"+id);
c.setattribute('r',"15");
c.setattribute('cx',pt.x);
c.setattribute('cy',pt.y);
c.setattribute('fill',inf);
c.setattribute('stroke-width','5');
c.setattribute('stroke',dis);
svg.appendChild(c);
}
如果我这样称呼它,这个函数就完美了:
$(document).ready(function() {
$("#small_map").load( function() {
drawInfluence(1,150,"red","blue");
});
});
但是,如果我使用:
$(document).ready(function() {
$("#small_map").load( function() {
$.ajax({
url: 'scripts/inf_map_load.php',success: function () {
// There is nothing to do here right now
}
});
});
});
带有如下所示的 PHP 文件:
<?php
echo' drawInfluence(1,"blue");';
?>
或者喜欢
<?php
echo' <script type="text/javascript">drawInfluence(1,"blue");</script>';
?>
我根本没有收到任何输出。
该函数在我的 .JS 文件中,以及我其他函数的其他 JQuery 回调(工作正常。)
我也试过:
$(document).ready(function() {
$("#small_map").load( function() {
$.ajax({
url: 'scripts/inf_map_load.php',success: function () {
alert("Testing");
drawInfluence(1,"blue");
}
});
});
});
并且圆圈将在它应该绘制的位置以及弹出的警报中绘制我不能使用来自该区域的 drawInfluence 因为最终目标是让 javascript 调用的信息从数据库中读取它包含多行数据,每行数据都有一个唯一的悬停和点击事件标识符。使用 php echo 语句编写整个文档是有效的,但不是最有效的,我更喜欢使用回调而不是内联 svg javascript。