我有一个页面上有预览图像,当你单击预览图像时,JQuery使用ajax load()函数将其替换为Java applet。小程序好起来(它是netlogo),似乎找到了它正在寻找的.nlogo文件。
此.nlogo文件名将传递给带有<param>
标记的applet。 applet是通用的,它将加载任何.nlogo文件并像NetLogo桌面应用程序一样运行它。
但是它没有显示任何内容。我知道它正在找到该文件,因为当我传递一个错误的文件名时,它会抛出一个错误,而现在它不会抛出一个。
如果代码只是正常地放在html中,它工作正常,但是当它加载了ajax时,applet没有正确初始化。
我猜测applet正在等待某种页面完成加载事件,这种事件永远不会发生。有什么方法可以伪造那条消息吗?
代码分布在各处,但这里是相关部分
div我正在搞乱
<div id="previewDiv">
Click the image to run the netlogo applet in your browser.<br>
<img id="previewImage" src='<?php echo($modelPath . $previewFile); ?>' style="margin: 8px;" />
</div>
使用applet替换预览图像的JQuery
$(document).ready(function(){
$("#previewImage").click(function(){
$("#previewDiv").load("appletcode.php?mid=<?php echo $mid; ?>");
});
});
为ajax请求发送的applet代码
<?php
error_reporting(E_ALL);
ini_set("display_errors", 1);
include "library.php";
connectdb();
$mid = mysql_real_escape_string($_GET['mid']);
$sql = "SELECT * FROM models WHERE modelId=$mid;";
$result = mysql_query($sql) or die($sql."<br/><br/>".mysql_error());
$row = mysql_fetch_array($result);
$version = $row['netlogoVersionStr'];
$nlogocode = $row['netlogoFile'];
$appletWidth = $row['appletWidth'];
$appletHeight = $row['appletHeight'];
$modelPath = "/complexityexplorer/netlogo/userfiles/$mid/";
$nlogoFilePath = $modelPath . rawurlencode($nlogocode);
?>
<applet code="org.nlogo.lite.Applet"
archive="/complexityexplorer/netlogo/<?php echo rawurlencode($version) ?>/NetLogoLite.jar"
width="<?php echo $appletWidth ?>" height="<?php echo $appletHeight ?>">
<param name="DefaultModel"
value="<?php echo $nlogoFilePath ?>">
<param name="java_arguments"
value="-Djnlp.packEnabled=true">
</applet>
上帝,我希望有人对此有一丝了解:/